我有一个GridView,其ButtonField类型为link
<asp:ButtonField ButtonType="Link" CommandName="more" HeaderText="Name Expands" DataTextField="name" />
当按下buttonField时,我想在下一列中显示一个额外的单元格。但我不想显示整个列,只显示该列上属于该行的单元格。
所以我创建了以下
protected void gv2_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "more")
和e.CommandArgument告诉我按下的行数
如果现在我说“gv2.Columns [3] .Visible = true;整个额外列都可见,这里我只想显示该列中的一个单元格。
如果我说:
gv2.Rows[Convert.ToInt32(e.CommandArgument)].Visible = true;
然后带有我想要的字段的额外列保持不可见。
我该怎么做?
非常感谢!
答案 0 :(得分:1)
ts无法使单元格可见。所以只显示相邻的细胞可见。
你可以使用类型模板字段的唯一一列,然后在该模板字段中创建一个表,并将电子邮件的td设置为可见的false和网格的行命令,因为之前的答案使得标签可见,你应该让你的td可见。
public class Demo
{
public string Dept { get; set; }
public string Email { get; set; }
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
List<Demo> list = new List<Demo>()
{
new Demo() { Dept="A", Email="a@a.com" },
new Demo() { Dept="B", Email="b@b.com" },
};
GridView1.DataSource = list;
GridView1.DataBind();
}
}
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "cmd")
{
GridViewRow row = (e.CommandSource as LinkButton).NamingContainer as GridViewRow;
Label email = row.Cells[1].FindControl("email") as Label;
email.Visible = true;
}
}
答案 1 :(得分:0)
我还没有办法做到这一点。相反,我选择创建另一个看不见的gridview“gv2”。当用户单击其中一个按钮字段时,在RowCommand函数中,我抓住我需要的信息并将其放在不可见的网格+我想要显示的单元格上。
因为我正在使用带有“更新面板”的AJAX,所以看起来并不太糟糕。(这是我的看法)
在这里,您可以看到它的外观http://www.nicoteksolutions.com/Forms/feed.aspx
谢谢! 尼科