C# Asp.net链接按钮循环
我有一个动态链接按钮,我需要帮助的问题。我正在基于datatable中的记录创建一个动态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();
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如果。