从标签中检索值会发送“对象引用未设置为对象的实例”。例外

时间:2016-09-21 06:48:46

标签: asp.net webforms

虽然有关于此主题的其他重复帖子,但他们没有简单地提供答案,所以像我这样的新手程序员不理解。

问题: 未从gridview内的标签获取文本值,以便我可以在数据库中更新该值。

来源视图:

    <asp:Content ContentPlaceHolderID="MainContent" runat="server">
<asp:GridView ID="GridView1" runat="server" AllowPaging="true"
AutoGenerateColumns="false"  PageSize="8" DataKeyNames="ID"
OnPageIndexChanging="GridView1_PageIndexChanging"
OnRowCancelingEdit="GridView1_RowCancelingEdit"
OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing"
OnRowUpdating="GridView1_RowUpdating">
<Columns>
<%--asset_name as 'Asset Name'--%>
<asp:TemplateField HeaderText="Asset Name">
<ItemTemplate >
<asp:Label ID="labelAssetName" runat="server" Text='<%# Eval("Asset Name") %>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

代码背后:

    Label lb2=(Label)GridView1.Rows[e.RowIndex].FindControl("labelAssetName");//Asset_Name
   int assettype = 0;
    if (lb2.Text == "Clothes & Apparels")
        assettype = 1;

    else if (lb2.Text == "Stationeries")
        assettype = 2;
    else if (lb2.Text == "Furnitures")
        assettype = 3;
    else if (lb2.Text == "Electronics")
        assettype = 4;
    else if (lb2.Text == "Transportations")
        assettype = 5;
    else if (lb2.Text == "Communications")
        assettype = 6;

当我运行程序时,我得到一个例外,如下所示:

System.NullReferenceException:对象引用未设置为对象的实例。

第97行:if(lb2.Text ==“服装与服饰”)

我从同一gridview中的文本框中获取值,但我无法获得标签值。

我很感激任何帮助解释这个例外的原因以及用简单的方法解决它的方法。

1 个答案:

答案 0 :(得分:0)

请尝试为gridview添加EditItemTemplate,然后将labelAssetName标签添加到该模板,然后尝试在RowUpdating事件中获取它。我想目前你只有itemtemplate。如果这不能解决您的问题,请告诉我。

另外请查看此片段,如果可以的话。这可能有所帮助。

http://www.aspsnippets.com/Articles/GridView-RowUpdating-event-example-in-ASPNet-using-C-and-VBNet.aspx

如果你还有问题的话。请告诉我。

我希望它有所帮助。