[英]ASP C# GridView Update SQL Database from Edited Value
我正在努力與此代碼。 我有一個gridview有一個可見的列和不可見的列( Visible="False"
)。 不可見列是系統值,所以我寧願不顯示用戶。
<asp:TemplateField HeaderText="Del. Qty">
<ItemTemplate>
<%# Eval("QUANTITY")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="txtQuantity" Text='<%# Eval("QUANTITY")%>' />
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="System ID" Visible="False">
<ItemTemplate>
<%# Eval("SYS_ID")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="txtSys" Text='<%# Eval("SYS_ID")%>' />
</EditItemTemplate>
</asp:TemplateField>
C#代碼:
protected void OnRowUpdating(object sender, GridViewUpdateEventArgs e)
{
var row = GridView2.Rows[e.RowIndex];
var txtQuantity = (TextBox) row.FindControl("txtQuantity");
var txtSys = (TextBox) row.FindControl("txtSys");
var qty = Convert.ToDecimal(txtQuantity.Text);
var sysId = txtSys.Text;
UpdateProduct(qty, sysId);
}
在調試時,我注意到問題是txtSys
始終顯示為NULL
。 如何使SYS_ID
的值對用戶不可見,但可在更新語句中使用?
當您使用Visible=false
,該列不會呈現到gridview中。 因此,當您嘗試使用row.FindControl
時,由於控件實際上並不存在,它將返回NULL。
而不是使用Visible=false
,使用沒有可見性的DIV替代項目:
<EditItemTemplate>
<div style="visibility:hidden;">
<asp:TextBox runat="server" ID="txtSys" Text='<%# Eval("SYS_ID")%>' />
</div>
</EditItemTemplate>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.