【发布时间】:2014-05-14 05:52:53
【问题描述】:
我有一个带有两个链接按钮的动态网格视图。如果我单击该链接按钮事件不会触发。但是如果我在页面中调用“显示”方法,则加载其工作正常。代码如下
public void display()
{
GridView grdv = new GridView();
grdv.AutoGenerateColumns = false;
DataSet ds = new DataSet();
DataTable dt = new DataTable();
BL.ESSBL bl = new BL.ESSBL();
ds = bl.GetContactList();//getting datatable
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
dt = ds.Tables[0];
grdv.RowDataBound += new GridViewRowEventHandler(grdv_RowDataBound);
grdv.DataSource = null;
grdv.DataBind();
grdv.Columns.Clear();
for (int i = 0; i < dt.Columns.Count; i++)
{
BoundField boundfield = new BoundField();
boundfield.DataField = dt.Columns[i].ColumnName.ToString();
boundfield.HeaderText = dt.Columns[i].ColumnName.ToString();
grdv.Columns.Add(boundfield);
}
TemplateField tmf = new TemplateField();
grdv.Columns.Add(tmf);
tmf = new TemplateField();
grdv.Columns.Add(tmf);
grdv.DataSource = dt;
grdv.DataBind();
pnlupdate.Controls.Add(grdv);
}
}
void grdv_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
int count= e.Row.Cells.Count;
LinkButton lnkupdate= new LinkButton();
lnkupdate.ID = "Update";
lnkupdate.Text = "Update";
LinkButton lnkdelete = new LinkButton();
lnkdelete.ID = "delete";
lnkdelete.Text = "delete";
lnkdelete.Click += new EventHandler(lnkdelete_Click);
lnkupdate.CommandArgument = (e.Row.DataItem as DataRowView).Row[0].ToString();
lnkdelete.CommandArgument = (e.Row.DataItem as DataRowView).Row[0].ToString();
lnkupdate.Click += new EventHandler(lnkupdate_Click);
e.Row.Cells[count-2].Controls.Add(lnkupdate);
e.Row.Cells[count-1].Controls.Add(lnkdelete);
}
}
protected void ddlProcess_SelectedIndexChanged(object sender, EventArgs e)
{
dynamicgridview(); // not working
Clear();
}
void lnkupdate_Click(object sender, EventArgs e)
{
Response.Write(@"<script language=""javascript"">alert(""update details "");</script>");
}
如果我在页面加载中放置“显示”方法,它将调用每个回发。我不希望这样。我想在下拉选择更改事件中调用此方法。如果我将“显示”方法放入该链接点击事件不会触发。 所以我必须做些什么来克服这个。
【问题讨论】:
-
您如何加载您的
dropdownlist并显示您的选择更改事件的代码。我认为不处理回发是实际问题。 -
@hassan 我用下拉列表更新了代码。我不想在页面加载中调用显示方法。有没有其他方法可以做到这一点。
-
好的,你是如何填充
ddlProcess的? -
@HassanNisar 我与 pageload.gridview 中的一个数据表绑定。但如果我单击 gridview 链接按钮不会触发并且它会消失。
-
所有关于回发的动态控件都需要在其控件树中的相应位置重新创建,以使其回发和视图状态正常工作...