簡體   English   中英

無法從Gridview獲得價值

[英]Can't get value from Gridview

我想通過gridview進行更新操作,但我無法理解。

我的gridview是這樣的:

<asp:GridView ID="GridView1" runat="server" ShowFooter="True" AutoGenerateColumns="False" DataKeyNames="ID"
                OnDataBinding="GridView1_DataBinding"
                OnRowDeleting="GridView1_RowDeleting"
                OnRowEditing="GridView1_RowEditing"
                OnRowUpdating="GridView1_RowUpdating">
                <Columns>
                    <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
                    <asp:BoundField DataField="ID" HeaderText="ID" ReadOnly="True" SortExpression="UserID" />
                    <asp:BoundField DataField="UserName" HeaderText="UserName" SortExpression="UserName" />
                    <asp:BoundField DataField="UserPW" HeaderText="UserPW" SortExpression="UserPW" />
                    <asp:BoundField DataField="UserType" HeaderText="UserType" SortExpression="UserType" />
                </Columns>
            </asp:GridView>

我的添加/刪除工作正常,但更新有問題,如從網格中獲取空值。 我嘗試了3種不同的方法來獲得價值。 注釋行給了我NullReferenceException,而未注釋的行沒有,但他們持有的值是空字符串。

這是我的aspx.cs更新。(我正在使用GridView的編輯/更新)

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex;
            GridView1.DataBind();
        }

        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            int userID = Convert.ToInt32(this.GridView1.DataKeys[e.RowIndex]["ID"]);
            var UserOperations = new ModelOperations.UserList.UserListOperations();

            //TextBox uname = (TextBox)this.GridView1.Rows[e.RowIndex].FindControl("UserName");
            string uname = this.GridView1.Rows[e.RowIndex].Cells[2].Text;
            string upw = this.GridView1.Rows[e.RowIndex].Cells[3].Text;
            //string uname = this.GridView1.SelectedRow.Cells[2].Text;
            //string upw = this.GridView1.SelectedRow.Cells[3].Text;
            //TextBox upw = (TextBox)this.GridView1.Rows[e.RowIndex].FindControl("UserPW");

            var result = UserOperations.updateUser(userID, uname, upw);
            GridView1.EditIndex = -1;
            GridView1.DataBind();
        }

嘗試:

string uname = e.NewValues["UserName"];
string upw = e.NewValues["UserPW"];

如果需要,您甚至可以將其與e.OldValues進行比較。

暫無
暫無

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

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