我已經發布了一個線程,避免向數據庫中添加空行。之前當點擊添加行時,無論用戶是否取消新行,它都會自動向數據庫中添加一個空行。我想通了,但現在出現了一個新問題。如果用戶在編輯新行時決定重新加載頁面(F5),它將在數據庫中添加一個空白行,這對我的情況來說是一個不行。任何人都可以幫我弄清楚如何避免這種情況?避免在數據庫中插入任何空白行
下面是我的插入代碼:
protected void gv_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Insert") //- this is needed to explain that the INSERT command will only work when INSERT is clicked
{
gv.DataBind();
DataTable d = dbcon.GetDataTable("SELECT * FROM CIS.CIS_TRANS ORDER BY ID DESC", "ProjectCISConnectionString");
string transCode = "", fundCode = "", BSA_CD = "", DP_TYPE = "";
if (d.Rows.Count > 0)
{
transCode = d.Rows[0]["TRANS_CD"].ToString();
fundCode = d.Rows[0]["FUND_CD"].ToString();
BSA_CD = d.Rows[0]["BSA_CD"].ToString();
DP_TYPE = d.Rows[0]["DP_TYPE"].ToString();
if (transCode.Trim().Length > 0)
{
dbcon.Execute("INSERT INTO CIS.CIS_TRANS (ID,TRANS_CD) VALUES(CIS.S_CIS_TRANS.nextval,'')", "ProjectCISConnectionString");
gv.DataBind();
}
}
gv.EditIndex = gv.Rows.Count - 1;
}
else if (e.CommandName == "Cancel")
{
DataTable d = dbcon.GetDataTable("SELECT * FROM CIS.CIS_TRANS ORDER BY ID DESC", "ProjectCISConnectionString");
string transCode = "";
if (d.Rows.Count > 0)
{
transCode = d.Rows[0]["TRANS_CD"].ToString();
if (transCode.Trim().Length == 0)
{
dbcon.Execute(string.Format("DELETE CIS.CIS_TRANS WHERE ID = '{0}'", d.Rows[0]["ID"]), "ProjectCISConnectionString");
gv.DataBind();
}
}
}
}
當你說「當用戶試圖在編輯時重新加載頁面」是否意味着當用戶在編輯表單時點擊F5 ..? – MethodMan 2012-08-08 15:17:05
是或當他們只選擇網址並點擊輸入。 – KKP 2012-08-08 15:20:25
爲什麼你在開始時調用'gv.DataBind();'? – 2012-08-08 15:21:48