Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在中继器内动态更新列标题_C#_Asp.net_Code Behind - Fatal编程技术网

C# 在中继器内动态更新列标题

C# 在中继器内动态更新列标题,c#,asp.net,code-behind,C#,Asp.net,Code Behind,我想根据对象的类型更新列标题的文本。假设我有objectA和objectB;如果它是objectA,我希望它作为“版本”出现在我的第二列中。如果不是objectA(表示其objectB),则更新同一列,但使用“B版本”文本 我的.aspx文件中有: <asp:Repeater runat="server" ID="rptBillHeaders" OnItemDataBound="rptBillHeaders_ItemDataBound"> <HeaderTemplate

我想根据对象的类型更新列标题的文本。假设我有objectA和objectB;如果它是objectA,我希望它作为“版本”出现在我的第二列中。如果不是objectA(表示其objectB),则更新同一列,但使用“B版本”文本

我的.aspx文件中有:

<asp:Repeater runat="server" ID="rptBillHeaders" OnItemDataBound="rptBillHeaders_ItemDataBound">
    <HeaderTemplate>
        <table width="98%" align="center" class="grid" cellpadding="0" cellspacing="0" style="border:solid 1px #000000; border-top:none 0px #FFFFFF;">
                <tr class="gridHeaderRow">
                    <th>&nbsp</th>
                    <th><asp:Label runat="server" ID="billVersionLabel" ></asp:Label></th>
                    <th>Action Type</th>
                    <th>Doc # </th>
                    <th>Status</th>
                    <th>Total Amount</th>
                    <th>Developed By</th>
                    <th>Date Submitted</th>
                    <th>Date Processed</th>  
...
这可能很容易做到,但我正在学习ASP.NET。因此,我研究了如何开发它,这是我试图在解决方案中实现的

到目前为止,在运行web应用程序时,中没有出现任何更改

提前谢谢


NM

您是否在方法中设置了断点并查看发生了什么?可能存在一些不同的问题,因此您需要精确地缩小代码中哪些部分没有达到预期效果。实际上,这条注释就是答案。你能在回答问题时提出同样的建议吗。我删除了断点,这使表能够正确填充。谢谢@adamheg。我很乐意,但我必须承认,我不确定删除断点将如何解决任何问题?!你是说程序卡在断点上了,一开始你没有注意到吗?我更新了我的问题,以准确地反映建议的更改,使标签可以被视为我想要的。总之,;必须将该控件指定为“rptBillHeaders.Controls[0]。Controls[0];”(两个零),并且不要在文本中放置
标记。是否在该方法中放置断点并查看发生了什么?可能存在一些不同的问题,因此您需要精确地缩小代码中哪些部分没有达到预期效果。实际上,这条注释就是答案。你能在回答问题时提出同样的建议吗。我删除了断点,这使表能够正确填充。谢谢@adamheg。我很乐意,但我必须承认,我不确定删除断点将如何解决任何问题?!你是说程序卡在断点上了,一开始你没有注意到吗?我更新了我的问题,以准确地反映建议的更改,使标签可以被视为我想要的。总之,;控件必须指定为“rptBillHeaders.Controls[0].Controls[0];”(两个零),并且不要在文本中放置标记。
protected void rptBillHeaders_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    RepeaterItem item = e.Item;
    if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
    {
        Repeater rptLineItems = ((Repeater)item.FindControl("rptLineItems"));
        rptLineItems.DataSource = currentBill.LineItemsByObjVersion[rowNumber].Sort(BillLineItem.SortColumn.LineItemNumber, System.Data.SqlClient.SortOrder.Ascending);
        rptLineItems.DataBind();
        rowNumber++;
    }       
        Control HeaderTemplate = rptBillHeaders.Controls[0].Controls[0];
        Label billVersionLabel = HeaderTemplate.FindControl("billVersionLabel") as Label;
        if (lit.BillTypes.ObjA == "A")
        {
            billVersionLabel.Text = " A Version";
        }
        else if (lit.BillTypes.ObjB == "B")
        {
            billVersionLabel.Text = " B Version";
        }

}