日期:2014-05-18  浏览次数:20495 次

datalist的一个问题
现在一个datalist被我绑定,datalist里有一个button,双击产生
protected   void   Button1_Click(object   sender,   EventArgs   e)
        {
        }
我现在的要求是,用户在点这个button的时候,就把这行删处,主要是我不知道这时怎么获得主键

------解决方案--------------------
给你一个案例:其中DataKeyField= "ID "是获得关键字的主要部分
下面是aspx的内容:

<asp:DataList ID= "DataList1 " runat= "server " OnUpdateCommand= "DataList1_UpdateCommand " DataKeyField= "UserID ">
<ItemTemplate>
<table style= " border:0; padding:0; ">
<tr> <td> <%# DataBinder.Eval(Container.DataItem, "ID ")%> </td> <td>
<asp:Button ID= "Button2 " runat= "server " Text= "删除 " CommandName= "Update " /> </td> </tr>
</table>
</ItemTemplate>
</asp:DataList>

接下来是CS的内容:

protected void DataList1_UpdateCommand(object source, DataListCommandEventArgs e)
{
string id = DataList1.DataKeys[e.Item.ItemIndex].ToString();
Response.Write(id);
//ID就是获得的主键
}


------解决方案--------------------
楼上正解,也是通用做法
如果你实在想在CLICK事件中做可以这样
主键绑定到BUTTON的CommandArgument属性
protected void Button1_Click(object sender, EventArgs e)
{
string id = (Button)sender.CommandArgument.ToString();
Response.Write(id);
}

不推荐这样做
------解决方案--------------------
控件上把主键设置到DataKeys属性上,然后DataList1.DataKeys[e.Item.ItemIndex]
------解决方案--------------------
绑定时指定:
datalist1.datasource=数据源;
datalist1.datekeyfield= "id "; --加上这个。id是你的主键,
datalist1.datebind();


另外将在html页面中设置Button1的CommandName= "Delete "。

然后在datalist1的deletecommand事件中写代码就可以了:
比如:先获取用户所点行的id,
string id=datelist1.datekeyfield[e.items.itemindex].tostring();
获取主键之后。下面就可以写你的删除操作了
------解决方案--------------------
不好意思。打错了一个地方

另外将在html页面中设置Button1的CommandName= "Delete "。

改为:

另外将在html页面中设置Button1的CommandName= "deletecommand "。
------解决方案--------------------
protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
string id = this.DataList1.DataKeys[(int)e.Item.ItemIndex].ToString();
string cmdSourceStr = ((LinkButton)e.CommandSource).Text;//获得按钮上的文字
switch (cmdSourceStr)
{
case "购买 ":
this.Label1.Text = "您购买的产品ID是: " + id;
break;
case "取消 ":
this.Label1.Text = "您取消的产品ID是: " + id;
break;
}
}
------解决方案--------------------

//或者你把把按钮设置一下CommandName值
protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
string id = this.DataList1.DataKeys[(int)e.Item.ItemIndex].ToString();
string cmdStr = e.CommandName;//获取按纽的CommandName值
switch (cmdStr)
{
case "sell ":