簡體   English   中英

ASP C#GridView從編輯值更新SQL數據庫

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM