ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c# – 在itemTemplate中查找标签并从后面的代码中绑定数据

2019-07-02 09:52:21  阅读:134  来源: 互联网

标签:c asp-net label gridview itemtemplate


我想在标签中显示值(itemTemplate中的标签)

我试过这种方法

string s = null;
SelfCollectNameSpace.SelfCollect address = new SelfCollectNameSpace.SelfCollect();

s = address.getSelfCollectAddress(orderNoTracking);

    if (string.IsNullOrEmpty(s) == false)
    {
        foreach (GridViewRow row in GridView1.Rows)
        {
            string LabelText = ((Label)row.FindControl("labelSelf")).Text;
            LabelText = s;
            Response.Write(LabelText+"test");
        }
     }

但gridview内的标签中没有显示任何内容. IT应该显示s的值.

接下来的方法是

    string s = null;
    SelfCollectNameSpace.SelfCollect address = new SelfCollectNameSpace.SelfCollect();
    s = address.getSelfCollectAddress(orderNoTracking);

       Label labelSelfCollect = GridView1.FindControl("labelSelf") as Label;
       labelSelfCollect.Text = "Self Collect at "+ s;  

我收到了这个错误

    System.NullReferenceException: Object reference not set to an instance of an object.

我使用的最后一种方法是

    string s = null;
    SelfCollectNameSpace.SelfCollect address = new SelfCollectNameSpace.SelfCollect();
    s = address.getSelfCollectAddress(orderNoTracking);
    if (string.IsNullOrEmpty(s) == false)
    {
        foreach (GridViewRow row in GridView1.Rows)
        {
            if (row.RowType == DataControlRowType.DataRow)
            {
                Label labelcollect = row.FindControl("labelSelf") as Label;
                labelcollect.Text = "self collect at "+ s;
            }             
        }           

    }

使用此方法也没有显示任何内容.我应该如何将s值分配到此labelSelf(itemTemplate中的标签)?

我的aspx代码

              <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" Width="772px" style="margin-left: 120px; text-align: left"  Height="100px"  DataKeyNames ="progressID" OnRowDataBound="GridView1_OnRowDataBound" OnRowDeleting="GridView1_RowDeleting" CellPadding="4" CssClass="rounded_corners" HeaderStyle-Height="40px">
                    <AlternatingRowStyle CssClass="rounded_corners tr tr" />                        
                     <Columns>
                        <asp:BoundField ControlStyle-BorderWidth="60" DataField="dateupdate" HeaderText="Date Update" DataFormatString="{0:dd/MM/yyyy}" >
                        <ControlStyle BorderWidth="60px" />
                        </asp:BoundField>
                        <asp:TemplateField HeaderText="Progress">
                           <ItemTemplate >                          
                                    <%# Eval("message") %> 
                               <br />
                          <asp:label ID="labelRemark" runat="server" style="Font-Size:11.5px;" text='<%# Eval("remark") %>'></asp:label><br />
                               <asp:Label ID="labelSelf" runat="server" style="Font-Size:11.5px;" ></asp:Label><br />
                               <div id="div<%# Eval("progressID") %>"  >                       
                                                  <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False"
                                                        DataKeyNames="progressID"  style="text-align:center; font-size:small;" CellPadding="4" OnRowCommand="GridView2_RowCommand" GridLines="None" CssClass="rounded_corners" Width="500px" >
                                                        <AlternatingRowStyle BackColor="White" />
                                                        <Columns>
                                                            <asp:BoundField DataField="tackingNo" HeaderText="Courier Tracking No"  ItemStyle-Font-Size="Small" ItemStyle-Width="150px" >
                                                            </asp:BoundField>
                                                            <asp:BoundField DataField="courierDate" HeaderText="Courier Date">
                                                            </asp:BoundField>
                           <asp:TemplateField HeaderText="Provider">
                             <ItemTemplate>
                                      <asp:HyperLink Text='<%#Eval("providernm")%>' Target="_blank" runat="server" DataNavigateUrlFields="companyurl" NavigateUrl='<%#Eval("companyurl")%>' ></asp:HyperLink>
                                   <br />
                                   </ItemTemplate>
                        </asp:TemplateField>   
                    <asp:TemplateField HeaderText="Tracking" >
                                  <ItemTemplate>
                                      <br />
                                      <asp:HyperLink Text="Track Here" Target="_blank" runat="server" DataNavigateUrlFields="trackingurl" NavigateUrl='<%#Eval("trackingurl")%>' ></asp:HyperLink>
                                     <br />
                                     <asp:Label ID="Label4" runat="server" Text="* check after 24 hours" Font-Italic="true"></asp:Label>
                                   </ItemTemplate>
                        </asp:TemplateField>

                                                        </Columns>
                                                    </asp:GridView>
                                             </div>

                        </ItemTemplate>                                                        
                        </asp:TemplateField>

                       <asp:TemplateField ShowHeader="false">
                             <ItemTemplate>
                                 <asp:LinkButton ID="LinkButtonDELETE" runat="server" CommandName="Delete" Text="Delete" OnClientClick= "return confirm('Confirm Delete progress?')"></asp:LinkButton>
                             </ItemTemplate>
                         </asp:TemplateField>

                   </Columns>

                      

谢谢.

解决方法:

使用GridView1_OnRowDataBound而不是foreach(GridView1.Rows中的GridViewRow行).除此之外,你的第一种方法是正确的.你只是没有在那里分配Text属性,而是从中读取它.

SelfCollectNameSpace.SelfCollect address = new SelfCollectNameSpace.SelfCollect();

protected void MyGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
  if(e.Row.RowType == DataControlRowType.DataRow)
  {
      Label labelSelf = (Label)e.Row.FindControl("labelSelf");
      labelSelf.Text = address.getSelfCollectAddress(orderNoTracking); // maybe you need to retrieve the orderNoTracking from another control in this row or from it's datasource
  }
}

标签:c,asp-net,label,gridview,itemtemplate
来源: https://codeday.me/bug/20190702/1355120.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有