我正在尝试处理datalist的itemcommand事件。我想使用datalist中绑定的按钮。但是,当我在itemcommand事件上添加一个断点时,事件并没有告诉我为什么它不能在这里工作,这是datalist源代码和我的代码
<asp:DataList ID="DataList1" runat="server" RepeatDirection="Horizontal"
onitemcommand="DataList1_ItemCommand1" >
<ItemTemplate>
<ul>
<li>
<a href="#"><asp:Image ID="Image1" runat="server" ImageUrl='<%#Eval("pictureurl") %>' Width="170px" Height="104px" /></a><br /><br />
<asp:Label ID="Label1" runat="server" Text='<%#Eval("fullname") %>'></asp:Label><br />
<asp:ImageButton ID="ImageButton2" runat="server" ImageUrl="~/images/Icons/accept1.png" CommandName="Accept" /> <asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/images/Icons/decline.png" />
</li>
</ul>
</ItemTemplate>
</asp:DataList>代码:
if (e.CommandName == "Accept")
{
string id = DataList1.DataKeys[e.Item.ItemIndex].ToString() ;
SqlCommand CmdAcceptRequest = new SqlCommand("Update FriendRequest set requeststatus='Accept' where RequestFrom='" + id + "'", con);
CmdAcceptRequest.CommandType = CommandType.Text;
CmdAcceptRequest.ExecuteNonQuery();
CmdAcceptRequest.Dispose();
}这段代码不适用于我。项目命令事件不起作用请专家告诉我哪里错了
发布于 2013-08-12 00:10:42
我假设您在每次回发时都会对DataList进行绑定。检查IsPostNack属性,例如:
protected void Page_Load(Object sender, EventArgs e)
{
if(!IsPostBack)
{
DataBindDataList();
}
}
private void DataBindDataList()
{
var dataSource = getSource(); // some data
DataList1.DataSource = dataSource;
DataList1.DataBind();
}否则,如果您再次将一个网络数据库控件DataBind为DataSource,则不会触发事件。这仅适用于手动数据库控件,而不适用于声明性数据源控件(如SqlDataSource或ObjectDataSource )。
https://stackoverflow.com/questions/18177968
复制相似问题