public class DataGridTemplate : ITemplate
{
ListItemType templateType;
string columnName;
public DataGridTemplate(ListItemType type, string colname)
{
templateType = type;
columnName = colname;
}
public void InstantiateIn(System.Web.UI.Control container)
{
Button yd=new Button();
switch(templateType)
{
...
case ListItemType.Item:
yd.Text = columnName;
yd.CommandName="btnclick";
container.Controls.Add(yd);
break;
}
......
{
ListItemType templateType;
string columnName;
public DataGridTemplate(ListItemType type, string colname)
{
templateType = type;
columnName = colname;
}
public void InstantiateIn(System.Web.UI.Control container)
{
Button yd=new Button();
switch(templateType)
{
...
case ListItemType.Item:
yd.Text = columnName;
yd.CommandName="btnclick";
container.Controls.Add(yd);
break;
}
......
在那里面就可以找到你要添加的事件了.
if(!IsPostBack){
//
}
中,否则无法触发DataGrid的ItemCommand事件.如果使用LinkButton则无此限制。
AddColumn.HeaderText="设定按钮列";
AddColumn.Text="设定按钮列";
AddColumn.CommandName="buttoncl";
DataGrid1.Columns.Add(AddColumn);
然后在DataGrid1_ItemCommand()中
if(e.CommandName=="buttoncl")
{
this.page.reg..("a","<script>alert('Button列按钮被点击!')</script>");
}这个动作没有反应呀!!
在哪里加呀?DataGrid的闪电符点开后,哪有这个事件呀?
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
namespace nss
{
/// <summary>
/// AmusementBook 的摘要说明。
/// </summary>
public class aa:System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.TextBox TextBox1;
protected System.Web.UI.WebControls.Button Button2;
protected System.Web.UI.WebControls.DataGrid DataGrid1;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!IsPostBack)
{
binddata();
}
} private void binddata()
{
string bnoselect=" select distinct val1,val2,val3 from table2";
..
..
BoundColumn bz=new BoundColumn();
bz.HeaderText="备注";
DataGrid1.Columns.Add(bz);
//button列
ButtonColumn AddColumn = new ButtonColumn();
AddColumn.HeaderText="设定按钮列";
AddColumn.Text="设定按钮列";
AddColumn.CommandName="Select";
DataGrid1.Columns.Add(AddColumn);
DataGrid1.DataSource=DataSet1.Tables[0];
DataGrid1.DataBind();
DataGrid1.Columns[0].Visible=false;
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.DataGrid1.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_ItemCommand);
this.DataGrid1.SelectedIndexChanged += new System.EventHandler(this.DataGrid1_SelectedIndexChanged);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion
private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if(e.CommandName=="Select")
{
TextBox1.Text="abc";
}
} private void DataGrid1_SelectedIndexChanged(object sender, System.EventArgs e)
{
TextBox1.Text="abc";
}
}
}
{
if (e.CommandName=="Pass")
{
Response.Write(e.Item.Cells[0].Text);
}
}
<asp:TemplateColumn>
<ItemTemplate>
<asp:LinkButton CommandName="Pass" id="lnk_Pass" runat="server">阅过</asp:LinkButton>
</ItemTemplate>
</asp:TemplateColumn>
aspx.cs
private void DgComplain_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if (e.CommandName=="Pass")
{
Response.Write(e.Item.Cells[0].Text);
}
}
再求教
BorderWidth="1px" BackColor="White" CellPadding="4" GridLines="Vertical" ForeColor="Black"
ShowFooter="True">
<FooterStyle BackColor="#CCCC99"></FooterStyle>
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#CE5D5A"></SelectedItemStyle>
<AlternatingItemStyle BackColor="White"></AlternatingItemStyle>
<ItemStyle BackColor="#F7F7DE"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#6B696B"></HeaderStyle>
<Columns>
<asp:TemplateColumn HeaderText="选择">
<HeaderStyle Width="40px"></HeaderStyle>
<ItemTemplate>
<asp:CheckBox id="CheckBox1" runat="server"></asp:CheckBox>
</ItemTemplate>
<FooterTemplate>
<asp:CheckBox id="CheckBox2" runat="server" Text="全选" OnCheckedChanged="Select_all"//请注意这里,定义的相应函数名 AutoPostBack="True"></asp:CheckBox>
</FooterTemplate>
</asp:TemplateColumn>
</Columns>
<PagerStyle HorizontalAlign="Right" ForeColor="Black" BackColor="#F7F7DE" Mode="NumericPages"></PagerStyle>
</asp:DataGrid>
public void Select_all(object sender, System.EventArgs e)//这里是相应函数
{
if((sender as CheckBox).Checked)
{
System.Web.UI.WebControls.CheckBox c=new CheckBox();
for(int i=0;i<dt.Rows.Count;i++)
{
System.Web.UI.WebControls.CheckBox ch=(Function.Child(this.DataGrid1.Items[i].Cells[0].Controls,c) as CheckBox);
if(!ch.Checked)
{
ch.Checked=true;
}
}
}
else
{
System.Web.UI.WebControls.CheckBox c=new CheckBox();
for(int i=0;i<dt.Rows.Count;i++)
{
System.Web.UI.WebControls.CheckBox ch=(Function.Child(this.DataGrid1.Items[i].Cells[0].Controls,c) as CheckBox);
if(ch.Checked)
{
ch.Checked=false;
}
}
}
}