无法获取TextBox值OnRowUpdating

时间:2015-05-30 09:13:03

标签: c# asp.net gridview

  

我正在尝试更新Gridview记录。在下面给出的代码中,我没有得到" txtChangeQuantity"   GridView1_RowUpdating更新事件中的文本框值。它只是显示了一个   空字符串。我在这里缺少什么?

TextBox tb = row.Cells[2].FindControl("txtChangeQuantity") as TextBox;
                string a = tb.Text;
  

a是""

 <asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" AutoGenerateColumns="False" Width="450px" 
            DataKeyNames="ItemID" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating">
            <AlternatingRowStyle BackColor="White" />
            <Columns>
                <asp:BoundField DataField="ItemName" HeaderText="Name"  ReadOnly="true" />
                <asp:BoundField DataField="Price" HeaderText="Unit Price"  ReadOnly="true" />

                 <asp:TemplateField>
   <ItemTemplate>
      <asp:Label ID="lbltxtChangeQuantity" runat="server" Text='<%# Eval("Quantity") %>' />
   </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="txtChangeQuantity" runat="server" Text='<%# Eval("Quantity") %>' />
                    </EditItemTemplate>
</asp:TemplateField>
                <asp:TemplateField>
   <ItemTemplate>
      <asp:Label ID="Label1" runat="server" Text='<%# String.Format("{0:c}", ((double)Eval("Price"))*((int)Eval("Quantity"))) %>' />
   </ItemTemplate>
</asp:TemplateField>
               <asp:CommandField ShowEditButton="true" />


                 <asp:TemplateField>
                        <ItemTemplate>
                            <asp:LinkButton ID="lnkdelete" runat="server" CommandName="Delete" >Delete</asp:LinkButton>
                        </ItemTemplate>
               </asp:TemplateField>


            </Columns>
            <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
            <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
            <RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
            <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
            <SortedAscendingCellStyle BackColor="#FDF5AC" />
            <SortedAscendingHeaderStyle BackColor="#4D0000" />
            <SortedDescendingCellStyle BackColor="#FCF6C0" />
            <SortedDescendingHeaderStyle BackColor="#820000" />
        </asp:GridView>


protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                BindGrid();
            }
        }

        private void BindGrid()
        {

            if (Session["CartItems"] != null)
            {
                List<ItemModel> itemList = (List<ItemModel>)Session["CartItems"];
                GridView1.DataSource = itemList;
                GridView1.DataBind();
            }

        }



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

        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            RepItem = new ItemRepository();
            string val = e.Keys["ItemID"].ToString();
            if (Session["CartItems"] != null)
            {

                GridViewRow row = (GridViewRow)GridView1.Rows[e.RowIndex];
                List<ItemModel> itemList = (List<ItemModel>)Session["CartItems"];

                TextBox tb = row.Cells[2].FindControl("txtChangeQuantity") as TextBox;
                string a = tb.Text;

                GridView1.DataSource = itemList;
                GridView1.DataBind();
            }
        }

2 个答案:

答案 0 :(得分:2)

在gridview中使用此string tb = ((TextBox)GridView1.Rows[rowIndex].FindControl("txtChangeQuantity")).Text 代码。

lbltxtChangeQuantity

您的问题是文本框ID txtChangeQuantity并将其更改为vector<unsigned> searchvec

答案 1 :(得分:1)

试试这个......

string test = (GridView1.Rows[row].FindControl("txtChangeQuantity") as TextBox).Text