网格视图按用户标识锁定按钮

时间:2016-04-22 11:20:10

标签: c# asp.net gridview foreach

我的项目中有一个gridview,像twitter这样可以看到其他人的帖子,但我想让用户更改帖子,因为每个帖子附近我都推出了一个编辑按钮。现在我的问题是,如果用户没有发布推文,我就无法锁定按钮。你能告诉我如何检查用户id(一个给定的变量)是否匹配推特用户ID(隐藏字段)我想使用for each循环但我无法成功使用它。

((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);

的.cs:

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        ShowHeader="False" onrowcommand="GridView1_RowCommand" 
        onrowediting="GridView1_RowEditing" OnRowCancelingEdit="GridView1_Cancel" 
        onrowupdating="GridView1_RowUpdating" 
        onrowdeleting="GridView1_RowDeleting"  >
    <Columns>
    <asp:TemplateField HeaderText="UserName">
    <ItemTemplate>
    <asp:Label ID="lbl_Username" runat="server" Text='<%#Eval("UserName") %>'></asp:Label>
    </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Tweet">
    <ItemTemplate>
    <asp:Label ID="lbl_Tweet" runat="server" Text='<%#Eval("TweetText") %>'></asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:TextBox ID="Tbx_Tweet" runat="server" Text='<%#Eval("TweetText") %>' ></asp:TextBox>
    </EditItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Picture">
    <ItemTemplate>
    <asp:Image ID="Pic" runat="server"  ImageUrl='<%#"~/UploadedImages/"+Eval("PicName") %>' />
    </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Like">
    <ItemTemplate>
    <asp:Button ID="Button1" runat="server" Text="Like"  CommandName="Like" CommandArgument='<%# Container.DataItemIndex %>' />
    </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="ReTweet">
    <ItemTemplate>
    <asp:Button ID="Button2" runat="server" Text="ReTweet"  CommandName="ReTweet" CommandArgument='<%# Container.DataItemIndex %>' />
    </ItemTemplate>
    </asp:TemplateField>

    <asp:TemplateField HeaderText="TweetID" Visible="true">
    <ItemTemplate>

    <asp:Label ID="lbl_TweetID" runat="server" Text='<%#Eval("TweetID") %>' ></asp:Label>
    </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="UserID" Visible="true">
    <ItemTemplate>
    <asp:Label ID="lbl_UserID" runat="server" Text='<%#Eval("UserID") %>' ></asp:Label>
    </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField  >  
                    <ItemTemplate >  
                        <asp:LinkButton ID="Edit" runat="server" Text="Edit" CommandName="Edit"  />
                    </ItemTemplate>  
    <EditItemTemplate>  
                        <asp:LinkButton ID="Delete" runat="server" Text="Delete" CommandName="Delete" />
                        <asp:LinkButton ID="btn_Update" runat="server" Text="Update" CommandName="Update"/>
                        <asp:LinkButton ID="btn_Cancel" runat="server" Text="Cancel" CommandName="Cancel"/>  
                    </EditItemTemplate>  
                    </asp:TemplateField>
    </Columns>
    </asp:GridView>               

1 个答案:

答案 0 :(得分:0)

您有更多选择。

  1. 创建RowDataBound事件处理程序并设置编辑按钮Visibile / Enable property:

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {   
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            Label userIdLbl = (Label)e.Row.FindControl("lbl_UserID");
            LinkButton editBt = (LinkButton)e.Row.FindControl("Edit");
            editBt.Visible = currentUserId == Convert.ToInt32(userIdLbl.Text);
        }
    }
    
  2. 在代码后面创建一个方法,检查userId是否为currentUserId,并将属性Visible / Enable添加到gridview模板中的编辑按钮:

    Visible='<%# IsCurentUserId((int)Eval("UserID")) %>