Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.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# 我正在尝试为一组超链接使用for循环创建ASP.NET表_C#_Asp.net - Fatal编程技术网

C# 我正在尝试为一组超链接使用for循环创建ASP.NET表

C# 我正在尝试为一组超链接使用for循环创建ASP.NET表,c#,asp.net,C#,Asp.net,我有一个超链接列表,我想用它创建一个2x*表(*是超链接的数量) 这是我的密码 for (int rows = 0; rows < hlist.Count; rows++) //Create rows for the number of hyperlinks, so i will always have a spare row. { TableRow row = new TableRow(); // Create the new rows

我有一个超链接列表,我想用它创建一个2x*表(*是超链接的数量)

这是我的密码

for (int rows = 0; rows < hlist.Count; rows++) //Create rows for the number of                    hyperlinks, so i will always have a spare row.
{  
    TableRow row = new TableRow(); // Create the new rows
    table.Rows.Add(row); //Add rows to the table
    for (int cells = 0; cells < 2; cells++)
    {
        TableCell cell = new TableCell();

        for(int h = 0; h < hlist.Count; h++)                  
            cell.Controls.Add(hlist[h]);
        row.Cells.Add(cell);
    }
}
for(int rows=0;rows
所有这些只是在一个单列表中列出我的所有超链接,每个超链接都有一个新行

任何帮助都将不胜感激


谢谢

假设要创建一个每行显示两个超链接的表,可以尝试以下代码:

for (int i = 0; i < hlist.Count; i += 2)
{
    TableRow row = new TableRow(); // Create the new rows
    table.Rows.Add(row);
    for (int j = i; j < Math.Min(i + 2, hlist.Count); j++)
    {
        TableCell cell = new TableCell();
        cell.Controls.Add(hlist[j]);
        row.Controls.Add(cell);
    }
}
for(int i=0;i
但是,如果您希望在ASP.NET中使用动态添加的控件对事件作出反应,那么在ASP.NET中使用这些控件是很复杂的。所以我建议你检查一下你是否可以改变你的方法,这样你就可以用一个新的方法来代替。为此,您首先必须更改数据模型,例如更改为包含两个URL的配对对象列表,例如:

public void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        IEnumerable<Uri> uris = GetUris();
        List<Tuple<Uri, Uri>> pairs = new List<Tuple<Uri, Uri>>();
        for  (int i = 0; i < uris.Count; i += 2)
        {
            var uri1 = uris[i];
            var uri2 = i + 1 < uris.Count ? uris[i + 1] : null;
            pairs.Add(new Tuple<Uri, Uri>(uri1, uri2));
        }
        rpt.DataSource = pairs;
        rpt.DataBind();
    }
}
public void页面加载(对象发送方,事件参数e)
{
如果(!Page.IsPostBack)
{
IEnumerable uris=GetUris();
列表对=新列表();
对于(int i=0;i
如果您的URL与Uri不兼容(可能它们包含前导~),您也可以使用字符串而不是Uri

中继器的标记类似于以下内容:

<asp:Repeater ID="rpt" runat="server">
    <HeaderTemplate>
         <table>
    </HeaderTemplate>
    <ItemTemplate>
        <tr>
            <td>
                <asp:HyperLink runat="server" Text="Link 1"
                   NavigateUrl='<%# DataBinder.Eval(Container.DataItem, "Item1") %>' />
            </td>
            <td>
                <asp:HyperLink runat="server" Text="Link 1" 
                   NavigateUrl='<%# DataBinder.Eval(Container.DataItem, "Item2") %>' />
            </td>
        </tr>
    </ItemTemplate>
    <FooterTemplate>
         </table>
    </FooterTemplate>
</asp:Repeater>


您能否更具体地说明您希望结果如何?举个例子会很有帮助。什么类型的
hlist
?这太棒了,这是一种享受,谢谢你的帮助!