使asp按钮字段在运行时可见

时间:2017-02-01 03:42:29

标签: c# asp.net gridview

我在gridview中有一个<asp:ButtonField>。如何根据条件定位gridview中的按钮以使其在运行时可见?我无法定位它,因为它没有ID属性。我被困在这里。这是下面的代码

<asp:GridView ID="OrdersDataList1" runat="server"  DataKeyNames="OrderID" Width="100%" SkinID="Gridview" OnPageIndexChanging="orders_PageIndexChanging" 
    EmptyDataText="You have no orders." AllowSorting="True" OnSorting="OnSort" AllowPaging="true" PageSize="15" AutoGenerateColumns="False" OnRowCommand="updateStatus">
    <Columns>
        <asp:BoundField DataField="CustomerUser_ID" HeaderText="UserID" Visible="true" />
        <asp:BoundField DataField="OrderID" HeaderText="OrderNo" InsertVisible="False" ReadOnly="True" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left" SortExpression="OrderID" />
        <asp:BoundField DataField="OrderDate" HeaderText="OrderDate" SortExpression="OrderDate" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"/>
        <asp:BoundField DataField="Base" HeaderText="Base" DataFormatString="{0:C}"   SortExpression="Base" HeaderStyle-HorizontalAlign="Right" ItemStyle-HorizontalAlign="Right"/>
        <asp:BoundField DataField="Freight" HeaderText="Freight" DataFormatString="{0:C}"   SortExpression="Freight" HeaderStyle-HorizontalAlign="Right" ItemStyle-HorizontalAlign="Right"/>
        <asp:BoundField DataField="Total" HeaderText="Total" DataFormatString="{0:C}"   SortExpression="Total" HeaderStyle-HorizontalAlign="Right" ItemStyle-HorizontalAlign="Right"/>
        <asp:BoundField DataField="Products" HeaderText="Products" SortExpression="Products" DataFormatString="{0} product" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left"/>
        <asp:BoundField DataField="Units" HeaderText="Units" SortExpression="Units"  DataFormatString="{0} units" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left"/>
        <asp:BoundField DataField="OrderStatusName" HeaderText="Current Status" SortExpression="OrderStatusName" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left"/>
        <asp:BoundField DataField="OrderStatusID" HeaderText="Orderstatusid" Visible="true" />
        <asp:BoundField DataField="OrderTracking_ID" HeaderText="TrackingNo" SortExpression="OrderTracking_ID" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left"/>
        <asp:TemplateField HeaderText="Action">
            <ItemTemplate>
                <%# GetViewOrderLink(Eval("OrderID").ToString(), Eval("OrderState").ToString())%>
            </ItemTemplate>
            <HeaderStyle HorizontalAlign="Left" />
            <ItemStyle HorizontalAlign="Left" />
        </asp:TemplateField>

        <asp:TemplateField HeaderText="Change Status" SortExpression="OrderStatusName">
            <ItemTemplate>
                <asp:DropDownList ID="OrderStatusDD" runat="server"
                    DataSourceID="OrdersStatuses" DataTextField="OrderStatusName" DataValueField="OrderStatusID" Visible="false">                                      
                </asp:DropDownList>
                <asp:SqlDataSource ID="OrdersStatuses" runat="server" 
                    ConnectionString="<%$ ConnectionStrings:SqlConn %>" 
                    SelectCommand="SELECT [OrderStatusID], [OrderStatusName] FROM [Orders_Statuses] where OrderStatusID = 2 or OrderStatusID = 8 ORDER BY [OrderStatusName]">
                </asp:SqlDataSource>
            </ItemTemplate>
        </asp:TemplateField>

        <asp:ButtonField ButtonType="Button" Text="Update status" Visible="false" HeaderText="Change Status" />
    </Columns>
</asp:GridView>

PS我在gridview上设置了onrowCommand来监听gridview中的按钮点击

3 个答案:

答案 0 :(得分:0)

您可以在GridView中使用multiselect事件,如下所示:

RowCreated

答案 1 :(得分:0)

您需要为gridview example

创建RowCreated事件

在渲染GridView控件之前,必须为控件中的每一行创建一个GridViewRow对象。创建GridView控件中的每一行时引发RowCreated事件。这使您能够提供执行自定义例程的事件处理方法,例如在发生此事件时将自定义内容添加到行。

protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
}

OR

<asp:GridView runat="server" ID="GV1" AutoGenerateColumns="false">
    <Columns>
        <asp:BoundField DataField="Name" HeaderText="Name" />
        <asp:BoundField DataField="Age" HeaderText="Age" />
        <asp:TemplateField>
            <ItemTemplate>
                <asp:Button runat="server" Text="Reject" 
                Visible='<%# IsOverAgeLimit((Decimal)Eval("Age")) %>' 
                CommandName="Select"/>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

protected Boolean IsOverAgeLimit(Decimal Age) {
    return Age > 35M;
}

参考example

答案 2 :(得分:-1)

((BoundField)grv_selec.Columns[1]).DataFormatString = "{0:N2}";
相关问题