C# Asp.net链接按钮循环

C# Asp.net链接按钮循环,c#,asp.net,object,loops,linkbutton,C#,Asp.net,Object,Loops,Linkbutton,我有一个动态链接按钮,我需要帮助的问题。我正在基于datatable中的记录创建一个动态asp.net表。我还使用动态链接按钮 protected System.Web.UI.WebControls.LinkButton lb; protected override void OnInit(EventArgs e) { // Build controls before page load lb = new LinkButton();

我有一个动态链接按钮,我需要帮助的问题。我正在基于datatable中的记录创建一个动态asp.net表。我还使用动态链接按钮

protected System.Web.UI.WebControls.LinkButton lb;    

protected override void OnInit(EventArgs e)
    {
        // Build controls before page load
        lb = new LinkButton();
        lb.Text = "Update Image";

        // LinkButton obj for updating record
        lb.ID = "UpdateImg";
        lb.Click += new EventHandler(UpdateImg);
        this.Controls.Add(lb);
        base.OnInit(e);
    }
我在nit上创建了一个新的linkbutton实例,以便在页面加载之前将其添加到页面中

foreach (DataRow r in tb.Rows) // Create new row foreach row in table
            {
                TableRow tr = new TableRow();

                // Build cells
                TableCell c1 = new TableCell();
                TableCell c2 = new TableCell();
                TableCell c3 = new TableCell();
                TableCell c4 = new TableCell();
                TableCell c5 = new TableCell();
                TableCell c6 = new TableCell();

                c1.Controls.Add(new LiteralControl(r["Image_id"].ToString()));
                tr.Cells.Add(c1);
                c2.Controls.Add(new LiteralControl(r["Image_name"].ToString()));
                tr.Cells.Add(c2);
                c3.Controls.Add(new LiteralControl(r["Alt_text"].ToString()));
                tr.Cells.Add(c3);
                c4.Controls.Add(new LiteralControl("<input id=\"" + r["Image_id"].ToString() + "\" type=\"checkbox\"" + "\"></input>"));
                tr.Cells.Add(c4);


                LinkButton lbcopy = new LinkButton();
                lbcopy = lb;
                lbcopy.ID = "UpdateImg" + i;
                i++;
                c5.Controls.Add(lbcopy);
                tr.Cells.Add(c5);


                c6.Controls.Add(new LiteralControl("<a href=\"javascript:void(0);\" onclick=\"DeleteImage('" + r["Image_id"].ToString() + "','" + r["Image_name"].ToString() + "');\"><img src=\"../images/clipboard/del.png\" id=\"" + r["Image_id"].ToString() + "\" width=\"20\" height=\"20\" BORDER=0></a>"));
                tr.Cells.Add(c6);
                tblImageLibrary.Rows.Add(tr); // Assign tr to table
foreach(tb.Rows中的DataRow r)//为表中的每个行创建新行
{
TableRow tr=新的TableRow();
//建造细胞
TableCell c1=新的TableCell();
TableCell c2=新的TableCell();
TableCell c3=新的TableCell();
TableCell c4=新的TableCell();
TableCell c5=新的TableCell();
TableCell c6=新的TableCell();
c1.Controls.Add(新的LiteralControl(r[“Image_id”].ToString());
tr.Cells.Add(c1);
c2.Controls.Add(新的LiteralControl(r[“Image_name”].ToString());
tr.Cells.Add(c2);
c3.Controls.Add(新的LiteralControl(r[“Alt_text”].ToString());
tr.Cells.Add(c3);

c4.Controls.Add(new LiteralControl(“我认为这不可能是您想要的,因为如果您想要动态添加控件,那么您必须为每个记录创建循环,然后将其添加到表中。

我很感激您正在尝试做的事情,但我可以建议另一种方法。尝试使用ListView(.Net 3.5+)并将linkButton放在每一行中。linkButton可以根据需要通过挂接到事件中而隐藏。此时,按钮还可以嵌入命令参数

 protected void MyListView_ItemDataBound(object sender, ListViewItemEventArgs e)
 {
     LinkButton linkButton = (LinkButton)e.Item.FindControl("linkButtonId");
     System.Data.DataRowView rowView = e.Item.DataItem as System.Data.DataRowView;

     //.. can hide and show depending on data
     linkButton.Visible = rowView["SomeData"].ToString() == "SomeValue";

     //.. or set command arg
     linkButton.CommandArgument = rowView["SomeMoreData"].ToString();
}
然后,“链接”按钮将触发事件。可以从事件中检索数据行和任何命令参数

 protected void MyListView_OnItemCommand(object sender, ListViewCommandEventArgs e)
 {
     if(e.CommandArgument == "SomeValue")
     {
       //.. do something
     }
 }
在Repeater和GridView控件上也可以使用类似的方法,这两个控件与早期版本的.Net(分别为1.0和2.0)一起工作。您甚至可能会发现GridView更有用,因为编辑按钮更具开箱即用性


动态构造表的方法会因事件和ViewState而出现问题。利用.Net网格控件会容易得多。

是否尝试在每行上呈现带有链接按钮的表? 查看
asp:listview
asp:gridview

如果可以从数据库中获取
数据表
数据集
,则只需将其绑定到listview或gridview即可

myListView.datasource=myDataSet myListView.databind()文件


您还需要定义布局并在ur aspx页面上指定列名。

我可以使用其他方法吗?linkbutton用于编辑datatable中的记录,这就是为什么我希望每行都有一个linkbutton。因此,用户可以编辑特定行。没有任何方法可以直接使用。因此,您必须使用loop如果。