[Asp.Net+C#]Datagrid使用技巧四(怎样控制在一个单元格中放置多个操作按钮及删除数据)

一、aspx的部分代码;
      <asp:datagrid id="MyDataGrid" runat="server" Width="100%" Font-Names="Verdana" BorderColor="Black"
       BorderWidth="1px" CellPadding="3" Font-Name="Verdana" Font-Size="8pt" HeaderStyle-BackColor="#aaaadd"
       AlternatingItemStyle-BackColor="#eeeeee" HorizontalAlign="Center" AutoGenerateColumns="False">
       <AlternatingItemStyle BackColor="#F7FBFF"></AlternatingItemStyle>
       <HeaderStyle Font-Bold="True" HorizontalAlign="Center" BackColor="#99CCFF"></HeaderStyle>
       <Columns>
        <asp:BoundColumn DataField="TempSemester" HeaderText="学期">
         <HeaderStyle Width="25%"></HeaderStyle>
        </asp:BoundColumn>
        <asp:BoundColumn DataField="ExamDate" HeaderText="考试时间">
         <HeaderStyle Width="25%"></HeaderStyle>
        </asp:BoundColumn>
        <asp:BoundColumn DataField="examname" HeaderText="考次">
         <HeaderStyle Width="35%"></HeaderStyle>
        </asp:BoundColumn>
        <ASP:BoundColumn HEADERTEXT="操作">
         <ITEMSTYLE HORIZONTALALIGN="Center" WIDTH="15%"></ITEMSTYLE>
        </ASP:BoundColumn>
        <ASP:HYPERLINKCOLUMN VISIBLE="False" TEXT="&lt;img src=&quot;../../images/modi.gif&quot; border=&quot;0&quot; alt=&quot;修改&quot;&gt;"
         DATANAVIGATEURLFIELD="ExamNameID" DATANAVIGATEURLFORMATSTRING="javascript:newwin('ModiExamset.aspx?ExamNameID={0}')"
         HEADERTEXT="编辑"></ASP:HYPERLINKCOLUMN>
        <ASP:BUTTONCOLUMN VISIBLE="False" TEXT="&lt;img src=&quot;../../images/del.gif&quot; border=&quot;0&quot; alt=&quot;删除&quot; onClick=&quot;return confirm('确实要删除此通讯录信息吗?');&quot;&gt;"
         HEADERTEXT="删除" COMMANDNAME="Delete"></ASP:BUTTONCOLUMN>
        <ASP:BoundColumn Visible="False" DataField="ExamNameID">
         <ITEMSTYLE HORIZONTALALIGN="Center"></ITEMSTYLE>
        </ASP:BoundColumn>
        <ASP:BoundColumn Visible="False" DataField="ExamType">
         <ITEMSTYLE HORIZONTALALIGN="Center"></ITEMSTYLE>
        </ASP:BoundColumn>
       </Columns>
      </asp:datagrid>
二、调用的事件;
   this.MyDataGrid.DeleteCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.MyDataGrid_DeleteCommand);
   this.MyDataGrid.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.MyDataGrid_ItemDataBound);
三、控制单元格内的多个按钮
  private void MyDataGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
  {
   if(e.Item.ItemIndex>=0){
    if(e.Item.Cells[7].Text.Trim()=="C"){
     TableCell optd=(TableCell)e.Item.Controls[3];
     //弹出式编辑
     TableCell opEdit=(TableCell)e.Item.Controls[4];
     optd.Controls.Add(opEdit.Controls[0]);
     //删除按钮
     TableCell opDel=(TableCell)e.Item.Controls[5];
     optd.Controls.Add(opDel.Controls[0]);     
    }
   }
  }
四、当点击删除是执行;
  private void MyDataGrid_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
  {
   string ExamNameID=e.Item.Cells[6].Text.Trim();
   string strSQL="delete ExamSubject where examnameid=" + ExamNameID;
   strSQL+=";";
   strSQL+="delete examname where examnameid=" + ExamNameID;
   if(db.InsertMoreDB(strSQL))
   {
    Response.Write(js.InforError("考次删除成功!"));
   }
   else{
    Response.Write(js.InforErrorBack("老师您好!由于该考 次的成绩已录入不能删除,如确需删除该考次,请先删除该考次的成绩。谢谢!"));
   }
   ExamInit();
  }

原文地址:https://www.cnblogs.com/JimZhang/p/226593.html