我有一个网页,我有一个gridview。我在页面加载事件上填充了gridview。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
loadGridView();
}
}
这是加载gridview方法。
private void loadGridView()
{
dataTable dt = getData(); // this function populates the data table fine.
gridView1.dataSource = dt;
gridview1.dataBind();
}
现在我在网格视图的RowDataBound事件的gridview列之一中添加了linkButtons。
protected void gvTicketStatus_RowDataBound(object sender, GridViewRowEventArgs e)
{
LinkButton lb = new LinkButton();
lb.Text = str1; // some text I am setting here
lb.ID = str2; // some text I am setting here
lb.Click += new EventHandler(lbStatus_click);
e.Row.Cells[3].Controls.Add(lb);
}
最后这是链接按钮点击事件的事件处理程序代码。
private void lbStatus_click(object sender, EventArgs e)
{
string str = ((Control)sender).ID;
// next do something with this string
}
问题是,LinkButtons很好地出现在数据网格中,但是click事件没有得到执行。控件永远不会到达事件处理程序代码。当我单击链接按钮时,页面只会刷新。可能是什么问题?
我试过从(!isPostBack)范围之外调用loadGridView()方法,但它没有帮助!
答案 0 :(得分:0)
尝试使用“Command”属性而不是Click事件
LinkButton lnkStatus = new LinkButton();
lnkStatus.ID = string.Format("lnkStatus_{0}", value);
lnkStatus.Text = "some text here";
lnkStatus.CommandArgument = "value";
lnkStatus.CommandName = "COMMANDNAME";
lnkStatus.Command += new CommandEventHandler(lnkStatus_Command);
否则,如果我的提案不满足您,您必须删除Page_Load事件上的!Postback。
答案 1 :(得分:0)
你必须使用GridView的OnRowCommand事件。
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName.Equals("LinkButton1")) //call the CommandArgument name here.
{
//code
}
}