c#
  • asp.net
  • 2012-01-12 85 views 0 likes 
    0

    我在VS 2005中有一个gridview。网格显示在文本框中,所以用户可以编辑。更新gridview中的数据

    <asp:TemplateField ItemStyle-Width="50"> 
         <ItemTemplate> 
          <asp:TextBox ID="txtSmall" runat="server" Width="45px" Text='<%#DataBinder.Eval(Container.DataItem,"Small") %>' OnTextChanged="TxtSmallChanged"> </asp:TextBox>               
         </ItemTemplate> 
        </asp:TemplateField> 
        <asp:TemplateField ItemStyle-Width="50"> 
         <ItemTemplate> 
          <asp:TextBox ID="txtMedium" runat="server" Width="45px" Text='<%#DataBinder.Eval(Container.DataItem,"Medium") %>' OnTextChanged="TxtMediumChanged"> </asp:TextBox>               
         </ItemTemplate> 
        </asp:TemplateField> 
    <asp:TemplateField ItemStyle-Width = "50"> 
         <ItemTemplate> 
          <asp:TextBox ID="txtTotal" runat="server" Width="45px" Text='<%#DataBinder.Eval(Container.DataItem,"Total") %>'> </asp:TextBox> 
          </ItemTemplate>              
         </asp:TemplateField> 
    

    每当文本框txtsmall或txtmedium变化(数字),文本框txttotal必须得到更新,如txtSmall和txtmedium总两者。当文本被改变时,我使用了一个函数TxtSmallChanged。我如何编写代码隐藏功能来更新txtTotal。我希望我很清楚。非常感谢!!

    +0

    只是一个建议,但考虑使用客户端脚本这样的事情。 – 2012-01-12 21:23:53

    +0

    @BalaR感谢巴拉,但你能具体吗?!你的意思是说Javascript吗? – Ram 2012-01-12 21:30:03

    +0

    你需要运行一个javascript,如: onUpdate {txtTotal.Text = txtSmall.Text + txtMedium.Text; } – MrFox 2012-01-12 21:31:14

    回答

    0

    试试这个:
    设置的AutoPostBack =真

    protected void txtSmall_TextChanged(object sender, EventArgs e) 
        { 
         TextBox t = (TextBox)sender; 
         GridViewRow r = (GridViewRow)t.NamingContainer; 
         Txtchanged(r.RowIndex); 
        } 
    
        protected void txtMedium_TextChanged(object sender, EventArgs e) 
        { 
         TextBox t = (TextBox)sender; 
         GridViewRow r = (GridViewRow)t.NamingContainer; 
         Txtchanged(r.RowIndex); 
        } 
    
        private void Txtchanged(int row_index) 
        { 
         TextBox t1 = (TextBox)GridView1.Rows[row_index].Cells[0].FindControl("txtSmall"); 
         TextBox t2 = (TextBox)GridView1.Rows[row_index].Cells[0].FindControl("txtMedium"); 
         TextBox t3 = (TextBox)GridView1.Rows[row_index].Cells[0].FindControl("txtTotal"); 
         t3.Text = (Convert.ToInt32(t1.Text) + Convert.ToInt32(t2.Text)).ToString(); 
    
        } 
    

    你可以用新值更新数据库中Txtchanged

    +0

    梦幻般的维诺!非常感谢你! – Ram 2012-01-13 14:51:45

    +0

    我试着用javascript做这个,以避免刷新(你不需要AJAX)。但我无法弄清楚如何获取文本框的Id ... – MrFox 2012-01-14 18:18:38

    相关问题