datalist问题

ruan_hg 2007-06-12 10:12:38
aspx:
<asp:DataList ID="DataList1" runat="server" ><ItemTemplate ><table><tr><td><a href="detail.aspx?s1=<%#DataBinder.Eval(Container.DataItem,"id1") %>"><%#DataBinder.Eval(Container.DataItem,"dt1") %></a></td><td><asp:LinkButton ID="Button1" Text=" 删" runat="server" CommandName="delete"/></td></tr></table></ItemTemplate>
</asp:DataList>
cs:
private void DataList1_DeleteCommand(object source,
System.Web.UI.WebControls.DataListCommandEventArgs e)
{
// Code to delete the item from the data source.
DataTable aTable = (DataTable)DataList1.DataSource;
aTable.Rows[e.Item.ItemIndex].Delete();
// Bind the data after the item is deleted.
DataList1.DataBind();
}
现在页面上的删除按钮点上去没反应
...全文
243 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
amandag 2007-06-12
  • 打赏
  • 举报
回复
你没有设置DataList1的DataKeyField
ruan_hg 2007-06-12
  • 打赏
  • 举报
回复
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

Line 57: cmd.Parameters.Add("@ID", SqlDbType.VarChar).Value = DataList1.DataKeys[e.Item.ItemIndex].ToString();
amandag 2007-06-12
  • 打赏
  • 举报
回复
private void DataList1_DeleteCommand(object source, DataListCommandEventArgs e)
{
SqlConnection cn = new SqlConnection(connectionString);
string strDelete = "delete Note Where id = @ID";
SqlCommand cmd = new SqlCommand( strDelete, cn );
//使用 DataKeys的前提是你给DataList1设置过DataKeyField,一般是数据库表的主键
cmd.Parameters.Add("@ID", SqlDbType.VarChar).Value = DataList1.DataKeys[e.Item.ItemIndex].ToString();
cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
DataList1.SelectedIndex = -1;
//下面这个是重新绑定数据的方法
BindDataList();
}
jimh 2007-06-12
  • 打赏
  • 举报
回复
DataTable aTable = (DataTable)DataList1.DataSource;//这样有问题,
经过postback后,DataList1.DataSource,已经没了,aTable还是需要手工保存到ViewState或Session里,否则postback后无法使用
ruan_hg 2007-06-12
  • 打赏
  • 举报
回复
那麻烦写个删除库里面的代码吧
我这边一旦commandname设置成delete就出错
MicroDeviser 2007-06-12
  • 打赏
  • 举报
回复
顶啦
amandag 2007-06-12
  • 打赏
  • 举报
回复
根据你报的错
Object reference not set to an instance of an object

我猜测 上面这句
DataTable aTable = (DataTable)DataList1.DataSource;
可能成功了,但是 (DataTable)DataList1.DataSource;返回的是null,你最好单步调式看看是不是这样
amandag 2007-06-12
  • 打赏
  • 举报
回复
楼主,你这个代码我测试过,可以删除,不过删除也是删的是DataTable里的数据,数据库里的数据是不会删除的
ruan_hg 2007-06-12
  • 打赏
  • 举报
回复
谢谢楼上,那个已经改好了
现在新问题是
Object reference not set to an instance of an object.
Line 53: aTable.Rows[e.Item.ItemIndex].Delete();
amandag 2007-06-12
  • 打赏
  • 举报
回复
private void DataList1_DeleteCommand(object source,
System.Web.UI.WebControls.DataListCommandEventArgs e)
======================================================
protected void DataList1_DeleteCommand(object source,
System.Web.UI.WebControls.DataListCommandEventArgs e)
ruan_hg 2007-06-12
  • 打赏
  • 举报
回复
改了还是点上去无效果
BearRui 2007-06-12
  • 打赏
  • 举报
回复
try:

Text=" 删" runat="server" CommandName="delOther"/>

把CommandName该下,2005中好像delete已经内置了。
ruan_hg 2007-06-12
  • 打赏
  • 举报
回复
现在新问题是
Object reference not set to an instance of an object.
Line 53: aTable.Rows[e.Item.ItemIndex].Delete();
ruan_hg 2007-06-12
  • 打赏
  • 举报
回复
Error 1 'list_title.DataList1_DeleteCommand(object, System.Web.UI.WebControls.DataListCommandEventArgs)' is inaccessible due to its protection level
ruan_hg 2007-06-12
  • 打赏
  • 举报
回复
是vs2005
lnwuyaowei 2007-06-12
  • 打赏
  • 举报
回复
jf
hertcloud 2007-06-12
  • 打赏
  • 举报
回复
vs2003?
那么应该是处理 事件掉了

在IDE设计界面上 点datalist控件 属性 选取 事件 重新点击 删除事件
如果是事件掉了应该会 产生DataList1_DeleteCommand1 将你上面的函数内容拷贝入新函数
并将 源函数删除

private void DataList1_DeleteCommand1(object source,
System.Web.UI.WebControls.DataListCommandEventArgs e)
{
// Code to delete the item from the data source.
DataTable aTable = (DataTable)DataList1.DataSource;
aTable.Rows[e.Item.ItemIndex].Delete();
// Bind the data after the item is deleted.
DataList1.DataBind();
}
下载方式:https://pan.quark.cn/s/b4d8292ba69a 在构建食品品牌的市场整合营销推广方案时,我们必须首先深入探究品牌的由来、顾客的感知以及市场环境。 此案例聚焦于一款名为“某饼干产品”的食品,该产品自1998年进入河南市场以来,经历了销售业绩的波动。 1999至2000年期间,其销售额取得了明显的上升,然而到了2001年则出现了下滑。 在先前的宣传活动中,品牌主要借助大型互动活动如ROAD SHOW来吸引顾客,但收效甚微,这揭示了宣传信息与顾客实际认同感之间的偏差。 通过市场环境剖析,我们了解到消费者对“3+2”苏打夹心饼干的印象是美味、时尚且充满活力,但同时亦存在口感腻、价位偏高、饼身坚硬等负面评价。 实际上,该产品可以塑造为兼具美味、深度与创新性的休闲食品,适宜在多种情境下分享。 这暗示着品牌需更精确地传递产品特性,同时消解消费者的顾虑。 在策略制定上,我们可考虑将新产品与原有的3+2苏打夹心进行协同推广。 这种策略的长处在于能够借助既有产品的声誉和市场占有率,同时通过新产品的加入,刷新品牌形象,吸引更多元化的消费群体。 然而,这也可能引发一些难题,例如如何合理分配新旧产品间的资源,以及如何保障新产品的独特性和吸引力不被既有产品所掩盖。 为了提升推广成效,品牌可以实施以下举措:1. **定位修正**:基于消费者反馈,重新确立产品定位,突出其美味、创新与共享的特性,减少消费者感知的缺陷。 2. **创新宣传**:宣传信息应与消费者的实际体验相契合,运用更具魅力的创意手段,例如叙事式营销,让消费者体会到产品带来的愉悦和情感共鸣。 3. **渠道选择**:在目标消费者常去的场所开展活动,例如商业中心、影院或在线平台,以提高知名度和参与度。 4. **媒体联...

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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