我在datagrid的一个模板列里动态添加啊了1个按钮
但是响应不了事件..大家帮我看看好吗,我的代码如下:
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
LinkButton lb=new LinkButton();
lb.Text="交费";
lb.CommandName="lb";
(e.Item.Cells[5]).Controls.Add(lbtnPaid);
}
public void datagrid_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if(e.CommandName=="lb")
{Response.Redirect("Add.aspx"); }
但是响应不了事件..大家帮我看看好吗,我的代码如下:
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
LinkButton lb=new LinkButton();
lb.Text="交费";
lb.CommandName="lb";
(e.Item.Cells[5]).Controls.Add(lbtnPaid);
}
public void datagrid_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if(e.CommandName=="lb")
{Response.Redirect("Add.aspx"); }
按钮列允许您添加带按钮的网格列,这些按钮允许用户执行特定的功能(例如,选择/删除当前行、将当前行置于编辑模式)。您可为预定义的功能创建按钮,或者创建自己的功能(例如,“添加到购物车”按钮)。可以定义两种类型的按钮列: 根据预定义,EditCommandColumn 元素包含三个按钮。在显示模式中,该列显示一个“编辑”按钮,用户单击此按钮可将行置于编辑模式(带有可编辑的控件)。当行处于编辑模式时,“编辑”按钮被替换为两个按钮:“更新”按钮和“取消”按钮。您可指定按钮的文字(标题)。
ButtonColumn 元素可以包含任意按钮。使用 ButtonColumn 元素,您可以定义某种预定义的功能(例如,选择行或删除行),或创建您自己的功能按钮。
当为按钮列定义按钮时,指定按钮的文字(标题)和按钮类型(LinkButton 或 Button)。另外,对于 ButtonColumn 元素中的按钮,请指定特殊的 CommandName 属性。此属性的设置可决定单击该按钮时发生的结果。例如:设置 结果
选择 单击此按钮可自动选择行。
删除 单击此按钮可引发 DataGrid 控件的 DeleteCommand。
自定义(非预定义的)值 单击此按钮可引发 DataGrid 控件的一般 ItemCommand。 注意 CommandName 属性的设置是区分大小写的。
大多数情况下,单击按钮都会引发事件,随后您可以处理该事件。(如果 CommandName 属性设置为“选择”,则会引发“选择”事件,但网格会自动处理该事件,以选择指定的行。)通常,您要在处理程序中确定受到影响的行和相应的操作,例如,将该行设置为编辑模式(或取消该设置),删除该网格行表示的数据行,等等。对于自定义按钮,网格会引发 ItemCommand 事件并将 CommandName 属性的值作为 EventArgs 对象的一部分传递。有关在 Visual Studio Web 窗体设计器中创建按钮列的详细信息,请参见“向 DataGrid Web 服务器控件添加按钮列”。有关创建按钮列的详细信息,请参见 DataGrid Web 服务器控件。
我现在就是想在这你动态添加按钮,然后点击执行事件
你看下这个帖子,咱们的saucer大大解释的很清楚
我不知道该怎么做了..唉
试试吧。
{
LinkButton lb=new LinkButton();
lb.Text="交费";
lb.CommandName="lb";
(e.Item.Cells[5]).Controls.Add(lb);
}
public void datagrid_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if(e.CommandName=="lb")
{
Response.Redirect("Add.aspx");
}
中有CommandName="lb"吗?
lb.Text="交费";
lb.CommandName="lb";
楼上..我是再程序里添加得,现在问题是..根本就没有跳到事件里..我是真的不知道该怎么改..大家帮帮我好嘛
foreach(DataGridItem dgi in DataGrid1.Items)
{
LinkButton lb=new LinkButton();
lb.Text="交费";
lb.CommandName="lbl";
dgi.Cells[5].Controls.Add(lb);
}
就可以了 。
{
foreach(DataGridItem dgi in dgList.Items)
{
LinkButton lb=new LinkButton();
lb.Text="交费";
lb.CommandName="lbl";
dgi.Cells[5].Controls.Add(lb);
}
}private void btnSearch_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
#region 搜索
strErr ="";
this.Search();
#endregion
}private void Search()
{
#region 搜索方法#region 绑定dg
DataTable dtProject;
ObjDepositMgmt.ListProject(ObjInfo,out dtProject ,out strErr);
this.DataPager1.RecordCount=dtProject.Rows.Count;
this.DataPager1.CurPageIndex=DataPager1.CurPageIndex;
this.dgList.PageSize=this.DataPager1.PageSize;
this.dgList.CurrentPageIndex=(this.DataPager1.CurPageIndex-1)>0?this.DataPager1.CurPageIndex-1:0;
this.dgList.DataSource=dtProject;
this.dgList.DataBind();
#endregion
#endregion
}
public void dgList_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{ #region 操作
// if(e.CommandName=="lb")
// {
// #region 标书购买操作
// Response.Redirect("AddDeposit.aspxID");
// #endregion
// }
switch(Convert.ToString(((LinkButton)e.CommandSource).CommandName))
{
case "lb":
Response.Redirect("AddDeposit.aspx");
break;
} #endregion
}
{
if(e.CommandName=="lb")
{
Response.Redirect("Add.aspx");
}
这个事件名好象要写成是 onpageclick 之类的
在ItemTemplate里面加入的按钮,如何在程序代码中访问...关注中.....
另外,楼主那个问题的确可以用 隐藏 按钮的 方式完成, 不用动态添加按钮.用 隐藏按钮的方式更方便.我看好多案例都是那么实现的.