【问题标题】:Set button attribute inside Gridview在 Gridview 中设置按钮属性
【发布时间】:2017-12-11 13:48:22
【问题描述】:

我在 Gridview 中有一个按钮。我想要做的是单击按钮时只需更改按钮颜色。 但是,在发布分页并单击按钮后,没有任何反应。 我是不是少了一步。

这是我的 .aspx 代码

<asp:GridView   id="gvStatus" runat="server" AutoGenerateColumns="false" BorderWidth="1px" BackColor="White" CellPadding="3" CellSpacing="2" BorderStyle="Solid" BorderColor="Black" GridLines="Both" Pager="10" OnRowDataBound="setcolor" OnRowCommand="setsingle" >
        <Columns>
                <asp:TemplateField HeaderText="1"  Visible="true" HeaderStyle-CssClass= "hdrBase" ItemStyle-CssClass="GridBase">
                    <ItemTemplate>
                        <asp:Button id="btnDOne" Width="35px"  Height ="25px" runat="server" Text='<%#(Eval("dateone", "{0:ddd}"))%>' CommandName="GetData" CommandArgument="<%#((GridViewRow) Container).RowIndex %>" ></asp:Button>
                    </ItemTemplate>
                </asp:TemplateField>        
        </Columns>
    </asp:GridView>

这里是c#

        protected void setsingle(object sender, GridViewCommandEventArgs e)
    {   
        if (e.CommandName == "GetData")
            { 
                //Get row index
                int rowindex  = Convert.ToInt32(e.CommandArgument);
                ////Get Row
                GridViewRow gvr = gvStatus.Rows[rowindex];
                //Find the button
                Button DayButton = gvr.FindControl("btnDOne") as Button;    
                //Set the color of the button
                DayButton.BackColor = Color.Cyan;
            }

为了测试代码是否正常工作,向 Gridview 添加了一个链接按钮并为其赋予相同的 CommandName:

            <asp:TemplateField HeaderText="1"  Visible="true" HeaderStyle-CssClass= "hdrBase" ItemStyle-CssClass="GridBase">
                <ItemTemplate>
                    <asp:Button id="btnDOne" Width="35px"  Height ="25px" runat="server" Text='<%#(Eval("dateone", "{0:ddd}"))%>' CommandName="GetData" CommandArgument='<%# Container.DataItemIndex %>' ></asp:Button>
                    <asp:LinkButton id="lbd1" runat="server"  Text="clickme " CommandName="GetData" CommandArgument='<%# Container.DataItemIndex %>'/>
                </ItemTemplate>
            </asp:TemplateField>

所以,链接按钮执行后面的代码没有问题。但是命令按钮不执行任何操作。在最后的代码 sn-p 中,您会注意到我比较了两者,基本上使命令按钮与链接按钮匹配到 CommandArgument 为止。

我已经验证了后面的代码可以正常工作,并且 CommandName 分配是正确的。 是否有其他方法可以为命令按钮执行此操作?

【问题讨论】:

  • 你在setsingle中设置断点了吗?
  • 按钮点击触发PostBacks实际上有很多关于如何向asp.net控件添加属性的示例做google搜索看看
  • @Tim 我确实设置了一个断点,代码很好,我更新了我的发现,我相信我在命令按钮上遗漏了一些东西,只是不确定是什么。
  • @Tommy:你说过你已经设置了一个断点并且代码很好。那将意味着不再有问题。我建议在代码隐藏中使用断点来查看是否从按钮触发了回发(Page_Load 中的断点)以及是否执行了RowCommand-event 处理程序(setsingle 中的断点)。您还可以签入setsingle(如果执行)您在那里获得的值。另一种选择是处理按钮的Click-事件。这更简单。

标签: c# asp.net listview button gridview


【解决方案1】:

我最终放弃了命令按钮并使用链接按钮,然后根据需要设置网格单元格的背景颜色。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    相关资源
    最近更新 更多