数据源如何才能不指定 deleteMethod

覃小西 2010-05-17 02:07:09
我写的代码如下:

<asp:GridView ID="GridView2" runat="server" AllowPaging="True" AutoGenerateColumns="False"
BackColor="White" BorderWidth="0px" CellPadding="3" CellSpacing="1" DataKeyNames="TeamID"
DataSourceID="ObjectDataSource2" HorizontalAlign="Center" OnRowDataBound="GridView2_RowDataBound"
OnRowDeleting="GridView2_RowDeleting" Width="100%" OnRowCommand="GridView2_RowCommand">
<Columns>
<asp:TemplateField>
<HeaderTemplate><input id="Checkbox21" name="chkall" onclick="CheckAll(this.form)" type="checkbox"> 全选 </HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="CheckBox2" name="chkall" runat="server" />
</ItemTemplate>
<ItemStyle Width="70px" />
</asp:TemplateField>
<asp:BoundField DataField="TeamLoginName" SortExpression="TeamLoginName" HeaderText="用户">
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField DataField="TeamName" SortExpression="TeamName" HeaderText="团队名称">
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField DataField="TeamParsonCount" SortExpression="TeamParsonCount" HeaderText="人数">
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField DataField="TeamMaster" SortExpression="TeamMaster" HeaderText="负责人">
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField DataField="UserGroup" SortExpression="UserGroup" HeaderText="用户组">
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:ButtonField DataTextField="Verify" HeaderText="审核" CommandName="set_verify">
<ItemStyle HorizontalAlign="Center" />
</asp:ButtonField>
<asp:HyperLinkField DataNavigateUrlFields="TeamID" DataNavigateUrlFormatString="TeamEdit.aspx?TeamID={0}" HeaderText="编辑" Text="修改" />
<asp:HyperLinkField DataNavigateUrlFields="TeamID" DataNavigateUrlFormatString="TeamInfo.aspx?TeamID={0}" HeaderText="查看" Text="查看" />
<asp:CommandField HeaderText="删除" ShowDeleteButton="true" />
</Columns>
</asp:GridView>
<asp:ObjectDataSource ID="ObjectDataSource2" runat="server"
SelectMethod="GetList" TypeName="业务逻辑层.TeamControl">
<SelectParameters>
<asp:Parameter Name="strWhere" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>



后台的代码如下:



protected void GridView2_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string UserID = GridView2.DataKeys[e.RowIndex]["TeamID"].ToString();
int ID = Convert.ToInt32(UserID);

TeamControl.Delete(ID);
GridView2.DataBind();

DialogControl.RunJS(this, "showms('删除成功');displaytab('tab_group','tab_company','tab_student')");

}
protected void GridView2_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow && GridView2.EditIndex == -1)
{
//加确认框
LinkButton btnLinkDelete = (LinkButton)e.Row.Cells[9].Controls[0];
if (btnLinkDelete != null)
{
btnLinkDelete.Attributes["onclick"] = "return cform();";
}


}
}
protected void GridView2_RowCommand(object sender, GridViewCommandEventArgs e)
{
int ID = (int)GridView2.DataKeys[Convert.ToInt32(e.CommandArgument)]["TeamID"];

switch (e.CommandName)
{
case "set_verify":
{
int _value = Convert.ToInt32(((LinkButton)(this.GridView2.Rows[Convert.ToInt32(e.CommandArgument)].Cells[6].Controls[0])).Text);
_value = _value == 1 ? 0 : 1;
TeamControl.FlagSet(ID, "Verify", _value);
ObjectDataSource2.DataBind();
GridView2.DataBind();
DialogControl.RunJS(this, "showms('审核成功');displaytab('tab_group','tab_company','tab_student')");
return;
}
default:
return;
}
}





一开始时删除是不会有错误的..而且正常...
后来不知怎么地..删除的时候实然出错了...

错误信息:

除非指定 DeleteMethod,否则 ObjectDataSource“ObjectDataSource2”不支持删除。

我原来明明不用指定DeleteMethod也可以删除的呀...
而且现在虽然提示错误...但数据是已经删除了的..
原因就是因为GridView2_RowDeleting方法把数据给删除了..

现在我不想指定DeleteMethod啊..怎么办..
还有..这是咋回事..郁闷~~~


...全文
255 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
覃小西 2010-11-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yangmin0611 的回复:]

这个方法不行啊。。 我试了下 没有弄出来 哎
[/Quote]

建议不要用这种方法删除了,好烦人的呢。
我现在已经改用repeater来作数据绑定了。 删除的话都是采用<a href="xxx.aspx?Id=n&type=del">删除</a>
这种形式来做的。其中Id=n可以改成id=<%Eval("ID")%>这种。
zhaomeng1230 2010-11-16
  • 打赏
  • 举报
回复
这个我也没搞出来啊 愁人啊
yangmin0611 2010-09-25
  • 打赏
  • 举报
回复
这个方法不行啊。。 我试了下 没有弄出来 哎
覃小西 2010-05-29
  • 打赏
  • 举报
回复
我找到问题的原因所在了..

如果不需要指定 ObjectDataSource的DeleteMethod

那么就要在GridView的
<asp:CommandField HeaderText="删除" ShowDeleteButton="true" />
加上一个属性:

ButtonType="Link"

上句就变成:

<asp:CommandField ButtonType="Link" DeleteText="删除" HeaderText="删除" ShowDeleteButton="true" />

覃小西 2010-05-25
  • 打赏
  • 举报
回复
谢谢二楼的提醒
覃小西 2010-05-19
  • 打赏
  • 举报
回复
没有人回回答吗??
koukoujiayi 2010-05-19
  • 打赏
  • 举报
回复
既然是用ObjectDataSource,那删除一般通过设置ObjectDataSource的DeleteMethod,
好象没必要放到到GridView2的RowDeleting事件中,
你的删除按钮是默认的,点击势必引发ObjectDataSource的DeleteMethod方法,但你又没设置!

你应该删除GridView2的RowDeleting事件
设置ObjectDataSource的DeleteMethod,而且应该中间层写一个Delete方法,而不是直接调用底层
删除成功的提示信息放在ObjectDataSource1_Deleted事件中,代码大致如下:
protected void ObjectDataSource1_Deleted(object sender, ObjectDataSourceStatusEventArgs e)
{
if (e.Exception == null)
DialogControl.RunJS(this, "showms('删除成功');displaytab('tab_group','tab_company','tab_student')");
}

62,241

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧