![](/img/trans.png)
[英]how to get value of a template field label of a gridview, getting error Object reference not set to an instance of an object
[英]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.