C# 数据列表中的启用按钮

C# 数据列表中的启用按钮,c#,sql,asp.net,datalist,datarow,C#,Sql,Asp.net,Datalist,Datarow,请温柔一点-我对C#还比较陌生!这方面已经有了一些线索,但它们似乎都有过于复杂的代码,我无法用模糊的解释来理解它们 我有一个由SQL数据库提供的数据列表,它将充当注释部分。如果用户创建了评论或是管理员,但似乎不知道如何: A) 以datalist中的button控件为目标,并 B) 仅当用户有权进行评论时才启用它 <asp:DataList ID="DataList2" runat="server"> <ItemTemplate>

请温柔一点-我对C#还比较陌生!这方面已经有了一些线索,但它们似乎都有过于复杂的代码,我无法用模糊的解释来理解它们

我有一个由SQL数据库提供的数据列表,它将充当注释部分。如果用户创建了评论或是管理员,但似乎不知道如何:

A) 以datalist中的button控件为目标,并

B) 仅当用户有权进行评论时才启用它

<asp:DataList ID="DataList2" runat="server">
        <ItemTemplate>
            <br />
            Comment:
            <asp:Label Text='<%# Eval("comment") %>' runat="server" ID="commentLabel" /><br />
            Posted on:
            <asp:Label Text='<%# Eval("postedDate") %>' runat="server" ID="postedDateLabel" /><br />
            Posted by:
            <asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl='<%# "user.aspx?user=" + Eval ("userName") %>'><%# Eval("userName") %></asp:HyperLink><br />
    <!-- Comment edit begins ------------------------------------------------------------------------>
            <asp:Button ID="commentEditButton" runat="server" Text="Edit" visible="false"/>

    <!-- Comment edit ends -------------------------------------------------------------------------->
            </ItemTemplate>
        </asp:DataList> 

提前谢谢

在databind上处理item databound事件,并设置您的条件以启用该按钮

   protected void DataList2_ItemDataBound1(object sender, DataListItemEventArgs e)
    {
        if (userIdData.Equals(Int32.Parse(Session["userId"].ToString())))
        {
            Button cmdButton = e.Item.FindControl("commentEditButton") as Button;
            if (cmdButton != null) cmdButton.Visible = true;
        }
    }

最后我自己解决了这个问题。我没有给
DataList
一个
DataKeyField
,而是在编辑超链接中添加了
OnItemCommand
CommandName

<asp:DataList ID="DataList2" runat="server" DataKeyField="Id" OnItemCommand="DataList2_ItemCommand">
    <ItemTemplate>
        <br />
        Comment:
        <asp:Label Text='<%# Eval("comment") %>' runat="server" ID="commentLabel" /><br />
        Posted on:
        <asp:Label Text='<%# Eval("postedDate") %>' runat="server" ID="postedDateLabel" /><br />
        Posted by:
        <asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl='<%# "user.aspx?user=" + Eval ("userName") %>'><%# Eval("userName") %></asp:HyperLink><br />
<!-- Comment edit begins ------------------------------------------------------------------------>
        <asp:LinkButton ID="commentEditButton" runat="server" CommandName="editComment" Visible="false">Edit</asp:LinkButton>
<!-- Comment edit ends -------------------------------------------------------------------------->
        </ItemTemplate>
    </asp:DataList> 

希望这对别人有帮助

给你的按钮输入命令参数,然后在ItemDatabound上完成你的工作。我感谢你的输入,但这对我来说毫无意义。您有一些示例代码吗?我如何“在数据绑定上处理项目数据绑定事件?”谢谢!
<asp:DataList ID="DataList2" runat="server" DataKeyField="Id" OnItemCommand="DataList2_ItemCommand">
    <ItemTemplate>
        <br />
        Comment:
        <asp:Label Text='<%# Eval("comment") %>' runat="server" ID="commentLabel" /><br />
        Posted on:
        <asp:Label Text='<%# Eval("postedDate") %>' runat="server" ID="postedDateLabel" /><br />
        Posted by:
        <asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl='<%# "user.aspx?user=" + Eval ("userName") %>'><%# Eval("userName") %></asp:HyperLink><br />
<!-- Comment edit begins ------------------------------------------------------------------------>
        <asp:LinkButton ID="commentEditButton" runat="server" CommandName="editComment" Visible="false">Edit</asp:LinkButton>
<!-- Comment edit ends -------------------------------------------------------------------------->
        </ItemTemplate>
    </asp:DataList> 
 if (e.CommandName == "editComment")
 {
     //Set condition for button visibility etc here
     String editId = userSearchDataList.DataKeys[e.Item.ItemIndex].ToString();
     //do stuff with editId
 }