簡體   English   中英

使用自動生成的列在GridView中的代碼隱藏的編輯值中查找Asp.Net

[英]Asp.Net finding in Code-behind edited values in GridView with autogenerated columns

我正在嘗試創建一個gridview的用戶控件,該控件將能夠顯示,編輯和刪除綁定到任何數據表的記錄。 在我的用戶控件中,我有:

<asp:GridView ID="EditableGrid" runat="server" Width="500px" Height="500px" AllowSorting="True"
                AutoGenerateColumns = "true"
       AutoGenerateDeleteButton   ="true" AutoGenerateEditButton="true"
                OnRowEditing="EditableGrid_RowEditing" 
                OnRowCancelingEdit="EditableGrid_RowCancelingEdit"
                OnRowUpdating="EditableGrid_RowUpdating"
                OnRowDeleting="EditableGrid_RowDeleting"

                 ></asp:GridView> 

在后面的代碼中,我有:

public void InitGrid(string theconnstr, string thetablename)
        {
            connstr = theconnstr;
            tablename = thetablename;
          //  Session["edgconnstr"] = connstr;
          //  Session["edgtablename"] = tablename;
            con = new SqlConnection(connstr);
            con.Open();
            using (SqlCommand cmd = new SqlCommand())
            {
                cmd.Connection = con;
                cmd.CommandText = "SELECT * FROM " + tablename;
                using (SqlDataReader rd = cmd.ExecuteReader())
                {
                    if (!rd.HasRows) return;
                    fields = new List<EdField>();
                    for (int i =0; i < rd.FieldCount; i++)
                    {
                        fields.Add(new EdField(rd.GetName(i), rd.GetDataTypeName(i)));
                    }
                }
            }
            con.Close();
        }

        public void Bind()
        {
         //   connstr = (String)Session["edgconnstr"];
          //  tablename = (String)Session["edgtablename"];
            con = new SqlConnection(connstr);
            con.Open();
            using (SqlCommand cmd = new SqlCommand())
            {
                cmd.Connection = con;
                cmd.CommandText = "SELECT * FROM " + tablename;
                using (SqlDataAdapter da = new SqlDataAdapter(cmd))
                {
                    using (DataTable dt = new DataTable())
                    {
                        da.Fill(dt);
                        EditableGrid.DataSource = dt;
                        EditableGrid.DataBind();
                        EditableGrid.Visible = true;
                    }
                }
            }
            con.Close();
        }


        protected void EditableGrid_RowEditing(object sender, GridViewEditEventArgs e)
        {
            EditableGrid.EditIndex = e.NewEditIndex;
            Bind();
        }

        protected void EditableGrid_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            EditableGrid.EditIndex = -1;
            Bind();
        }


        protected void EditableGrid_RowCommand(object sender, GridViewCommandEventArgs e)
        {
        }


        protected void EditableGrid_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {


        }

現在,我沒有成功嘗試在EditableGrid_RowUpdating事件處理程序中找到已編輯行的新值。 我只是無法訪問文本框,因此無法運行查詢以將舊值更新為新值。 我想實現的目標是否可能?

使用e.NewValues集合。

protected void EditableGrid_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    int tx = Convert.ToInt32(e.NewValues[0]);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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