您的位置:首页 > 其它

GridVieW控件自定义删除按钮-解决多级相关中删除问题

2010-01-21 19:40 495 查看
最近做了一个计划管理系统,一级计划下面,还有二级、三级计划。当时就遇到一个问题,当删除某一级别的计划时,与它相关的信息到底是删还是不删呢?后来采取的方法就是只能从最低一级开始删,例如,当二级计划下,有三级计划时,二级计划就是不可删的;如果没有三级计划时,二级计划就成了最低一级,就可以删除。

这样,在用GridView控件显示计划信息时,就应该自定义一个删除按钮。首先判断这一级计划下,还有没有子计划,若有,删除按钮就是不可用的;若无,删除按钮就是可用的。

.aspx页面相关代码如下

<tr>
<td style="height: 100%; width: 100%; text-align:center">
<asp:GridView ID="GvPro02" runat="server" AllowPaging="True" AutoGenerateColumns="False"
OnRowDeleting="GvPro02_RowDeleting"  OnRowDataBound="GvPro02_RowDataBound"
OnRowUpdating="GvPro02_RowUpdating"  OnPageIndexChanging="GvPro02_PageIndexChanging">

<Columns>
<asp:BoundField DataField="ID" HeaderText="id" />
<asp:BoundField DataField="Pro02State" HeaderText="状态" />
<asp:BoundField DataField="Pro02ID" HeaderText="项目代码" />
<asp:BoundField DataField="Pro02Name" HeaderText="项目名称"  />
<asp:BoundField DataField="Pro02Level" HeaderText="级别" />
<asp:BoundField DataField="Pro02Sort" HeaderText="类别"  />
<asp:BoundField DataField="Pro02Director" HeaderText="负责人"  />
<asp:BoundField DataField="Pro02FromTime" HeaderText="开始时间"/>
<asp:BoundField DataField="Pro02PreEndTime" HeaderText="预计完成"/>
<asp:BoundField DataField="Pro02RealEndTime" HeaderText="实际完成"/>

<asp:TemplateField HeaderText="子项目">
<ItemTemplate >
<asp:HyperLink ID="Pro03Enter"  runat="server" Text='Enter' NavigateUrl ='<%# "~/ProTrdList.aspx?Fst_id="+Eval("Pro01ID") +"&Snd_id="+Eval("Pro02ID")%>'></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="Pro02Dtl"  runat="server" Text='Detail' NavigateUrl ='<%# "~/ProSndDtl.aspx?dtl_id="+Eval("ID") %>'></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="LinkButtonUpdate" runat="server" CausesValidation="False" CommandName="Update"
Text="Edit"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="LinkButtonDel" runat="server" CausesValidation="False" CommandName="Delete"
Text="Delete"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>

</Columns>
<HeaderStyle BackColor="Gray" Font-Bold="True" ForeColor="White" />

</asp:GridView><br>

</td>
</tr>


.aspx.cs

//删除模板列--当计划有子计划时,删除按钮不起作用。
public void GvPro02_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
LinkButton del = (LinkButton)e.Row.FindControl("LinkButtonDel");
string sqlPro02DelIf="select * from tbPro03 where Pro02ID='"+e.Row.Cells[2].Text.ToString()+"'";
SqlDataAdapter mydaPro02If=new SqlDataAdapter(sqlPro02DelIf,con);
DataSet mydsPro02If=new DataSet();
mydaPro02If.Fill(mydsPro02If,"tbPro03");
con.Close();
if(mydsPro02If.Tables[0].Rows.Count != 0)
{
del.Enabled = false;
//del.Attributes.Add("Enabled", "true");//不起作用
}
else
{

del.OnClientClick="return confirm('确认要删除吗?')";
}

}
}

//删除
protected void GvPro02_RowDeleting(object sender, GridViewDeleteEventArgs e)
{

string sqlPro02Del = "delete from tbPro02 where ID='" + GvPro02.DataKeys[e.RowIndex].Value.ToString() + "'";
sqlcom = new SqlCommand(sqlPro02Del, con);
con.Open();
sqlcom.ExecuteNonQuery();
con.Close();
bind();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: