获取使用javascript计算的按钮单击事件上的gridview模板字段标签值

时间:2014-03-06 12:45:43

标签: c# javascript asp.net c#-4.0 gridview

我有一个Gridview(gvMRVdetails),其中包含许多模板字段,其中一个是

<asp:TemplateField HeaderText="Issued Total Qty" ItemStyle-Width="8%" ControlStyle-Width="98%">
    <ItemTemplate>
        <asp:Label ID="lblIssuedTotalQty" runat="server" Text='<%#Bind("TotalIssuedQty") %>'></asp:Label>
    </ItemTemplate>
</asp:TemplateField>

最初我将0.00绑定为TotalIssuedQty

然后我将通过javascript在另一个文本框(txtIssuedQty)按键事件(也在网格视图中)计算“lblIssuedTotalQty”的新值。 我可以通过以下

指定其值
function CalculateTotalQty(obj) {
        var grid = document.getElementById('<%=gvMRVdetails.ClientID %>');
        var rwIndex = 1;
        var gvRowCount = grid.rows.length;
        if (grid != null) {
            for (rwIndex; rwIndex <= gvRowCount - 1; rwIndex++) {

                var txtIssuedQty = grid.rows[rwIndex].cells[4].firstChild;
                var lblIssuedTotalQty = grid.rows[rwIndex].cells[9].firstChild;
                lblIssuedTotalQty.innerText = parseFloat(txtIssuedQty.value)*2 
                }
            }

它将是可见的  例如,如果我在txtIssuedQty中输入2.5,lblIssuedTotalQty将显示5.It工作正常。  但我的问题是  我想在ButtonClickevent

中获取动态计算的值
 protected void btnAllocate_Click(object sender, EventArgs e)
    {
            foreach (GridViewRow GVR in gvMRVdetails.Rows)
            {
                    Label a = GVR.FindControl("lblIssuedTotalQty") as Label;
                    string s = a.Text;
        }
    }

我只能获得s中的初始值0.00。我无法获得5 in s。如果我使用的是文本框而不是 标签,可能但使用标签如何获得它。

2 个答案:

答案 0 :(得分:1)

在客户端更改时,标签文本值不会在回发时保留它的值。您有两种选择:

1)尝试从发布的表单值中获取值,如下所示:

Label a = GVR.FindControl("lblIssuedTotalQty") as Label;
string s = Request[a.UniqueID] as string;

2)使用客户端上的隐藏字段来存储您的值,然后在回发时检索它。 设置隐藏字段的值,然后您可以从代码隐藏

中检索它
 <ItemTemplate>
    <asp:Label ID="lblIssuedTotalQty" runat="server" Text='<%#Bind("TotalIssuedQty") %>'>/asp:Label>
    <asp:hiddenfield id="hdnIssuedTotalQty"  runat="server"/>
</ItemTemplate>

答案 1 :(得分:1)

Sureshhh我认为问题是因为当您单击服务器控件按钮时,页面控件被加载,因此标签'lblIssuedTotalQty'再次绑定到0.00,因此当您在后面的代码中访问它时,您获得的值为0.00

正如您所提到的,如果您打算使用不会被绑定的文本框,可以在后面的代码中使用新的js计算值。

FIX:添加任何控件,你不会绑定它在网格视图中的每一行上获取它的值(它可能就像你试过的那样测试框)并将其可见性设置为false 即可。在js中,将计算值设置为此不可见控件,并在后端获取它。