<asp:datagrid id="DataGrid1" runat="server" AutoGenerateColumns="False" Width="760px" HorizontalAlign="Center" CellPadding="4" Font-Size="14px" BorderWidth="1px" BorderStyle="Outset" BorderColor="#A3B6DD" DataKeyField="newsid"><SelectedItemStyle Wrap="False" HorizontalAlign="Left"></SelectedItemStyle>
<EditItemStyle Wrap="False" HorizontalAlign="Left"></EditItemStyle>
<AlternatingItemStyle Wrap="False"HorizontalAlign="Left"BackColor="#ECF4FF"></AlternatingItemStyle>
<ItemStyle Wrap="False" HorizontalAlign="Left" ForeColor="Black"BackColor="White"></ItemStyle>
<HeaderStyle Font-Size="9pt" Font-Bold="True" Wrap="False" HorizontalAlign="Center" ForeColor="Black" BackColor="#CFDFFF"></HeaderStyle>
<FooterStyle Wrap="False" HorizontalAlign="Center" ForeColor="#003399" BackColor="#99CCCC"></FooterStyle>
<Columns>
<asp:BoundColumn DataField="newsid" ReadOnly="True" HeaderText="编号">
<HeaderStyle Wrap="False" Width="5%"></HeaderStyle>
<ItemStyle Wrap="False"></ItemStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="heading" HeaderText="新闻标题">
<HeaderStyle Wrap="False" Width="50%"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="source" HeaderText="新闻来源">
<HeaderStyle Wrap="False" Width="20%"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="addtime" HeaderText="发布日期" DataFormatString="{0:yyyy年M月d日}">
<HeaderStyle Wrap="False" Width="17%"></HeaderStyle>
<ItemStyle Wrap="False"></ItemStyle>
</asp:BoundColumn><asp:TemplateColumn HeaderText="操作">
<HeaderStyle Width="8%"></HeaderStyle>
<ItemTemplate>
<asp:ImageButton id="ibtnEdit" CommandName="Edit" runat="server" ImageUrl="IMAGES\edit.gif"></asp:ImageButton>
<asp:ImageButton id="ibtnDelete" CommandName="Delete" runat="server" ImageUrl="IMAGES\delete.gif"></asp:ImageButton>
</ItemTemplate>
</asp:TemplateColumn></Columns>
</asp:datagrid>
后台:public class no_DataGrid : System.Web.UI.Page
{
protected System.Data.SqlClient.SqlConnection conn;
protected System.Data.SqlClient.SqlCommand cmd;
protected Wuqi.Webdiyer.AspNetPager pager;
protected System.Web.UI.WebControls.ImageButton ibtnAdd;
protected System.Web.UI.WebControls.ImageButton ibtnPrint;
protected System.Web.UI.WebControls.DataGrid DataGrid1; private void Page_Load(object sender, System.EventArgs e)
{
conn=new SqlConnection(ConfigurationSettings.AppSettings["SQLConnString"]);
if(!Page.IsPostBack)
{
cmd=new SqlCommand("whhy_GetPagedNews",conn);
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add("@pageindex",1);
cmd.Parameters.Add("@pagesize",1);
cmd.Parameters.Add("@docount",true);
conn.Open();
pager.RecordCount=(int)cmd.ExecuteScalar();
conn.Close();
BindData();
} } void BindData()
{
cmd=new SqlCommand("whhy_GetPagedNews",conn);
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add("@pageindex",pager.CurrentPageIndex);
cmd.Parameters.Add("@pagesize",pager.PageSize);
cmd.Parameters.Add("@docount",false);
conn.Open();
DataGrid1.DataSource=cmd.ExecuteReader();
DataGrid1.DataBind();
conn.Close(); //动态设置用户自定义文本内容 pager.CustomInfoText="记录总数:<font color=\"blue\"><b>"+pager.RecordCount.ToString()+"</b></font>";
pager.CustomInfoText+=" 总页数:<font color=\"blue\"><b>"+pager.PageCount.ToString()+"</b></font>";
pager.CustomInfoText+=" 当前页:<font color=\"red\"><b>"+pager.CurrentPageIndex.ToString()+"</b></font>";
}
void DataGrid1_Command(Object sender, DataGridCommandEventArgs e)
{
int newsid=(int)DataGrid1.DataKeys[e.Item.ItemIndex]; if(e.CommandName =="Delete")
{
// ...
conn=new SqlConnection(ConfigurationSettings.AppSettings["SQLConnString"]);
cmd=new SqlCommand("delete from cyz where newsid=" + newsid,conn);
cmd.ExecuteNonQuery();
conn.Close();
} BindData();
}

解决方案 »

  1.   

    imagebutton的事件绑定丢了吧。
      

  2.   

    在DataGrid1_Command中conn 没有打开连接
    不能执行操作
    要conn.Open()
      

  3.   

    我怎么没有看到button的事件啊
      

  4.   

    是不是句柄丢失从属性对话框中重新生成事件DataGrid1_ItemCommand===
    void DataGrid1_Command(Object sender, DataGridCommandEventArgs e)
    怎么来的
      

  5.   

    在<asp:datagrid id="DataGrid1" runat="server" AutoGenerateColumns="False" Width="760px" HorizontalAlign="Center" CellPadding="4" Font-Size="14px" BorderWidth="1px" BorderStyle="Outset" BorderColor="#A3B6DD" DataKeyField="newsid"> 里面加上 OnItemCommand="DataGrid1_Command" 
    在代码里将DataGrid1_Command 定义为public
      

  6.   

    conn.Open()
    已经打开了 可是还不行goody9807() :”是不是句柄丢失从属性对话框中重新生成事件DataGrid1_ItemCommand“请说明白 我的水平有限
      

  7.   

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.Button1.Click += new System.EventHandler(this.Button1_Click);
    //看看下面这行有没有!
    this.DataGrid1.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_ItemCommand);

    this.Load += new System.EventHandler(this.Page_Load); }
      

  8.   

    <ItemTemplate>
    <asp:ImageButton id="ibtnEdit" CommandName="Edit" runat="server" ImageUrl="IMAGES\edit.gif"></asp:ImageButton>
    <asp:ImageButton id="ibtnDelete" CommandName="Delete" runat="server" ImageUrl="IMAGES\delete.gif"></asp:ImageButton>
    </ItemTemplate>你写在这里面的CommandName根本不会激活ItemCommand事件。有一种变通的方法前台加一行
    <asp:ButtonColumn Text="选择" Visible="False" CommandName="Delete"></asp:ButtonColumn>后台的itemcreate事件中
    e.Item.Cells[2].Controls[0].Attributes.Add("onclick", "javascript:__doPostBack('" + e.Item.Cells[0].Controls[0].UniqueID + "','')");
    (这里e.Item.Cells[2].Controls[0]定位到你的那个图片按钮,e.Item.Cells[0].Controls[0]定位到隐藏的Detete按钮)这样。。再在DataGrid_ItemCommand事件中捕获处理Delete行事件
      

  9.   

    用了yananfu2000(安子)的方法,已经好了.多谢各位的帮忙!!!!!!!
    还有一个小问题,用yananfu2000(安子)的方法怎样删除前确认一下?马上散分!!!
      

  10.   

    void DataGrid1_Command(Object sender, DataGridCommandEventArgs e)
    有问题,
    good9807有道理的说。