Gridview 中的“喜欢”和“不喜欢”按钮。如何实施?

问题描述 投票:0回答:4

我有一个显示用户反馈的网格视图。每行都有一些按钮,例如“喜欢”和“不喜欢”,每个按钮都会使用特定的命令名称和命令参数触发 gridview RowCommand 事件。

如果用户单击“喜欢”按钮,则应禁用“喜欢”按钮并启用“不喜欢”按钮。如果用户改变主意并单击“不喜欢”按钮,则应禁用“不喜欢”按钮并启用“喜欢”按钮,依此类推。有什么想法吗?

我尝试过这个但没有运气

protected void BtnLike_Click(object sender, EventArgs e)
{
    Button thumbs_up = (Button)sender;
    thumbs_up.Enabled = false;

    Button thumbs_down = (Button)sender;
    thumbs_down.Enabled = true;
}

protected void btnDislike_Click(object sender, EventArgs e)
{
    Button thumbs_down = (Button)sender;
    thumbs_down.Enabled = false;

    Button thumbs_up = (Button)sender;
    thumbs_up.Enabled = true;
}

aspx代码

<asp:GridView ID="GridViewFeedback" runat="server" CellPadding="4" ForeColor="#333333"
                        GridLines="None" AutoGenerateColumns="False" DataKeyNames="ItemID" AllowPaging="True"
                        AllowSorting="True" DataSourceID="SqlDataSource1" OnRowCommand="GridViewFeedback_RowCommand"
                        Width="100%" OnRowDataBound="GridViewFeedback_RowDataBound">
                        <AlternatingRowStyle BackColor="White" />
                        <Columns>                              
                            <asp:TemplateField HeaderText="Item Description" SortExpression="ItemDesc">                                   
                                <ItemTemplate>
                                    <asp:Label ID="lblDesc" runat="server" Text='<%# Bind("ItemDesc") %>'></asp:Label>
                                </ItemTemplate>
                                <ItemStyle HorizontalAlign="Left" />
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="Like" InsertVisible="False" SortExpression="Vote">
                                <ItemTemplate>
                                    <asp:Button ID="BtnLike_Click" runat="server" Text="Like" CommandName="VoteUp" OnClick="BtnLike_Click_Click"
                                        CommandArgument='<%# Bind("ItemID") %>' />
                                </ItemTemplate>
                                <ItemStyle HorizontalAlign="Center" />
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="Dislike" InsertVisible="False" SortExpression="Vote">
                                <ItemTemplate>
                                    <asp:Button ID="btnDislike_Click" runat="server" Text="Dislike" CommandName="VoteDown" OnClick="btnDislike_Click_Click"
                                        CommandArgument='<%# Bind("ItemID") %>' />
                                </ItemTemplate>
                                <ItemStyle HorizontalAlign="Center" />
                            </asp:TemplateField>

                    </asp:GridView>
c# asp.net
4个回答
2
投票

首先,你需要知道你在哪一行,然后在这一行做你需要做的事情:

void GridViewFeedback_RowCommand(Object sender, GridViewCommandEventArgs e)
{
    GridViewRow gvr = (GridViewRow)(((Control)e.CommandSource).NamingContainer);
    Button btnUp = gvr.FindControl("BtnLike_Click");
    Button btnDown = gvr.FindControl("btnDislike_Click");

    if(e.CommandName == "VoteUp")
    {
        btnUp.Enabled = false;
        btnDown.Enabled = true;
    }
    else if(e.CommandName == "VoteDown")
    {
        btnUp.Enabled = true;
        btnDown.Enabled = false;
    }
}    

确保您处理了

RowCommand
GridView
事件!

免责声明:我还没有测试代码,所以它们可能是语法错误..


1
投票

你可以这样尝试

protected void BtnLike_Click_Click(object sender, EventArgs e)
    {


        GridViewRow row = (GridViewRow)((Button)sender).NamingContainer;
        Button BtnLike_Click = (Button)row.FindControl("BtnLike_Click");
        Button btnDislike_Click = (Button)row.FindControl("btnDislike_Click");
        BtnLike_Click.Enabled = false;
        btnDislike_Click.Enabled = true;
    }

    protected void btnDislike_Click_Click(object sender, EventArgs e)
    {
        GridViewRow row = (GridViewRow)((Button)sender).NamingContainer;
        Button BtnLike_Click = (Button)row.FindControl("BtnLike_Click");
        Button btnDislike_Click = (Button)row.FindControl("btnDislike_Click");
        BtnLike_Click.Enabled = true ;
        btnDislike_Click.Enabled = false ;
    }

0
投票

这有效。

protected void ButtonLike_Click_Click(object sender, EventArgs e)
{
    GridViewRow row = (GridViewRow)((Button)sender).NamingContainer;
    Button ButtonLike_Click = (Button)row.FindControl("ButtonLike_Click");
    Button ButtonDislike_Click = (Button)row.FindControl("ButtonDislike_Click");
    ButtonLike_Click.Enabled = false;
    ButtonDislike_Click.Enabled = true;
}

protected void ButtonDislike_Click_Click(object sender, EventArgs e)
{
    GridViewRow row = (GridViewRow)((Button)sender).NamingContainer;
    Button ButtonLike_Click = (Button)row.FindControl("ButtonLike_Click");
    Button ButtonDislike_Click = (Button)row.FindControl("ButtonDislike_Click");
    ButtonLike_Click.Enabled = true ;
    ButtonDislike_Click.Enabled = false ;
}

0
投票

我们也可以应用这些点赞的计数吗?

© www.soinside.com 2019 - 2024. All rights reserved.