簡體   English   中英

獲取使用javascript計算的按鈕單擊事件上的gridview模板字段標簽值

[英]Get gridview template field Label value on button click event which is calculated using javascript

我有一個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;
        }
    }

我只能在sI中獲得初始值0.00不能得到5 in s。如果我使用文本框而不是標記它,可能但是使用標簽如何獲取它。

在客戶端更改時,標簽文本值不會在回發時保留它的值。 您有兩種選擇:

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>

Sureshhh我認為問題是因為當您單擊服務器控件按鈕時,頁面控件被加載,因此標簽'lblIssuedTotalQty'再次綁定到0.00,因此當您在后面的代碼中訪問它時,您獲得值為0.00。

正如您所提到的,如果您要使用不會被綁定的文本框,則可以在后面的代碼中使用新的js計算值。

FIX: 在網格視圖中的每一行添加任何不綁定的控件以獲取其值(它可能就像您嘗試過的測試框一樣) 並將其可見性設置為false 在js中將計算值設置為此不可見控件並在后端獲取它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM