c#
  • asp.net
  • 2012-01-12 111 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

    相關問題