前台:
<asp:GridView ID="gvPayType" runat="server" AutoGenerateColumns="False"
                         Style="position: relative" Width="100%" OnRowDataBound="gvPayType_RowDataBound">
                        <Columns>
                            <asp:BoundField DataField="ParaNumber" HeaderText="编码">
                                <HeaderStyle HorizontalAlign="Left" Width="15%" />
                                <ItemStyle HorizontalAlign="Left" />
                            </asp:BoundField>
                            <asp:BoundField DataField="ParaName" HeaderText="付款方式">
                                <HeaderStyle HorizontalAlign="Left" Width="25%" />
                                <ItemStyle HorizontalAlign="Left" />
                            </asp:BoundField>
                            <asp:TemplateField HeaderText="金额">
                                <HeaderStyle HorizontalAlign="Left" Width="25%" />
                                <ItemStyle HorizontalAlign="Left" />
                                <ItemTemplate>
                                    <asp:TextBox runat="server" Height="12px" Width="70px"  id="txtMoney" AutoPostBack="True"></asp:TextBox>
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="备注">
                                <HeaderStyle HorizontalAlign="Left" Width="35%" />
                                <ItemStyle HorizontalAlign="Left" />
                                <ItemTemplate>
                                    <asp:TextBox runat="server" Height="12px" Width="90px" id="txtNotes" AutoPostBack="True"></asp:TextBox>
                                </ItemTemplate>
                            </asp:TemplateField>
                        </Columns>
                    </asp:GridView>后台:
protected void btnSave_Click(object sender, EventArgs e)
 {
        decimal payMoney=0;
        foreach (GridViewRow gvr in gvPayType.Rows)
        {
            TextBox tbMoney = (TextBox)gvr.FindControl("txtMoney");
            TextBox tbNotes = (TextBox)gvr.FindControl("txtNotes");
            if (tbMoney.Text != "")
                payMoney += Decimal.Parse(tbMoney.Text);
--这里得到的tbMoney.Text始终为我绑定时的值,而不是页面输入的值,这个太奇怪了,原来使用好像没这问题阿
        }
}高手解决!谢谢!!

解决方案 »

  1.   

    AutoPostBack="True"
    这个是没有的,我测试时加的
    暂时还未找到方法
      

  2.   

    TextBox tbMoney.Text = ((TextBox)gvr.FindControl("txtMoney")).Text;
      

  3.   

    TextBox tbMoney.Text = ((TextBox)gvr.FindControl("txtMoney")).Text;
    你这句话没问题?
    tbMoney.Text = ((TextBox)gvr.FindControl("txtMoney")).Text;
    这样还差不多但是这跟我的有什么区别?问题是tbMoney.Text的值在页面输入改变后的值就不能得到,其值还是为绑定时的值
      

  4.   

    再说查到孟子的资料也是这样用的阿
    http://dotnet.aspx.cc/article/a933b187-06c3-4263-9eec-414a54d9c815/read.aspx
      

  5.   

    把榜定GridView的事件放到下面的if语句中
    if (!IsPostBack)

    }
      

  6.   

    对,可能是每次载入都重新绑定了datagrid,textbox的值丢失,只需要!IsPostBack绑定即可
      

  7.   

    if (!IsPostBack)

    }
    的問題
      

  8.   

    if (!IsPostBack)

    }
      

  9.   

    如果你放在if (!IsPostBack)那么貌似不该这样
    另外这个完全可以交给sqldatasource来作,就省了自己写代码了嘛
      

  10.   

    在Page_Load里面把GridView的数据绑定的代码放入
    if (!IsPostBack)

    }