我想在特定条件下在 GridView 单元格上添加一个按钮。我在 RowDatabound 事件中做了以下事情
if( i==0)
{
Button btn= new Button();
btn.Text = "view more";
e.Row.Cells[7].Controls.Add(btn);
}
执行此操作时,绑定的单元格中的文本将丢失,仅显示按钮。我需要按钮和单元格文本已经存在。
谁能帮我做这件事?
我想在特定条件下在 GridView 单元格上添加一个按钮。我在 RowDatabound 事件中做了以下事情
if( i==0)
{
Button btn= new Button();
btn.Text = "view more";
e.Row.Cells[7].Controls.Add(btn);
}
执行此操作时,绑定的单元格中的文本将丢失,仅显示按钮。我需要按钮和单元格文本已经存在。
谁能帮我做这件事?
当您将控件添加到单元格中时,它会胜过单元格中的文本,并且只想显示控件。
但是,您可以同时拥有文本和按钮,同时将它们分开。为此,您需要以标签的形式添加另一个控件:
Label myLabel = new Label();
myLabel.Text = e.Row.Cells[7].Text; //might want to add a space on the end of the Text
e.Row.Cells[7].Controls.Add(myLabel);
LinkButton myLinkButton = new LinkButton();
myLinkButton.Text = "view more";
e.Row.Cells[7].Controls.Add(myLinkButton);
这是一种解决方法,请检查它是否对您有帮助:
Linkbuton
如果您的要求可行,您可以将现有的 BoundColumn 转换为。
if( i==0)
{
LinkButton lnkbtn = new LinkButton();
lnkbtn.Text = e.Row.Cells[7].Text;
// Create a command button and link it to your id
// lnkbtn.CommandArgument = e.Row.Cells[0].Text; --Your Id
// lnkbtn.CommandName = "NumClick";
// btn.Text = "view more";
e.Row.Cells[7].Controls.Add(lnkbtn);
}
您必须在每次回发时重新创建所有动态控件。但RowDataBound
仅当网格获得数据绑定时才执行。所以这不是正确的方法。
如果这只是一个按钮,则应以声明方式将其添加到 .aspx 中TemplateField
。然后您可以在 中切换可见性RowDataBound
。
教程 12:在 GridView 控件中使用 TemplateFields
Button btn = (Button)e.Row.FindControl("ButtonID");
btn.Visible = i==0;
您可以为您的“查看更多”逻辑处理Click
事件。Button