动态显示gridview的ButtonField

时间:2015-12-07 12:26:45

标签: c# asp.net gridview

我有一个gridview,它有一个我想要的列动态显示它: 如果IsExpert或IsAgent等于true则显示它不显示它我不想使用RowBoundData。(IsExpert和IsAgent是服务器端属性)

mycode的:

<asp:GridView ID="grvTicketList" runat="server" AllowPaging="True" AutoGenerateColumns="False" CssClass="table half table-hover table-mc-light-blue" GridLines="None"
EmptyDataText="تیکتی موجود نیست" OnPageIndexChanging="grvTicketList_PageIndexChanging" PagerStyle-BackColor="White"
PagerStyle-ForeColor="Black" OnRowCommand="grvTicketList_RowCommand" >
<Columns>

    <asp:BoundField DataField="TicketID" ReadOnly="true" HeaderText="شماره تیکت" />
    <asp:BoundField DataField="CurrentStateId" ReadOnly="true" HeaderText="شماره مرحله فعلی تیکت" />
    <asp:BoundField DataField="TrackingCode" ReadOnly="true" HeaderText="کد رهگیری" />
    <asp:BoundField DataField="ServiceName" ReadOnly="true" HeaderText="نام خدمت" />
    <asp:BoundField DataField="SubServiceName" ReadOnly="true" HeaderText=" نام زیر خدمت" />
    <asp:BoundField DataField="strTicketDate" HeaderText="زمان ثبت تیکت" />
    <asp:BoundField DataField="CustomerName" HeaderText=" نام و نام خانوادگی مشتری" />
    <asp:BoundField DataField="StateName" HeaderText="وضعیت تیکت" />
    <asp:BoundField DataField="UserName" HeaderText="نام ثبت کننده تیکت" />

    <asp:ButtonField Text="بازخورد" CommandName="FeedBack" ButtonType="Link" >
        <ItemStyle ForeColor="#003399" />
    </asp:ButtonField>

</Columns>

<PagerStyle BackColor="White" ForeColor="Black"></PagerStyle>

2 个答案:

答案 0 :(得分:1)

在页面加载

if(IsExpert || IsAgent)
    GridView1.Columns[9].Visible=true;
 else
    GridView1.Columns[9].Visible=false;

答案 1 :(得分:0)

而不是使用aspx我更喜欢代码隐藏,例如Page_LoadDataBound。请注意,DataBound仅触发一次,而不是针对每一行触发的RowDataBound

代码隐藏:

protected void GrvTicketList_DataBound(Object sender, EventArgs e)
{
    GridView grid = (GridView)sender;
    grid.Columns[9].Visible = IsExpert || IsAgent;
}

aspx(添加事件处理程序):

<asp:GridView ID="grvTicketList" OnDataBound="GrvTicketList_DataBound" runat="server" AllowPaging="True" AutoGenerateColumns="False" CssClass="table half table-hover table-mc-light-blue" GridLines="None"
EmptyDataText="تیکتی موجود نیست" OnPageIndexChanging="grvTicketList_PageIndexChanging" PagerStyle-BackColor="White"
PagerStyle-ForeColor="Black" OnRowCommand="grvTicketList_RowCommand" >
<Columns>

    <asp:BoundField DataField="TicketID" ReadOnly="true" HeaderText="شماره تیکت" />
    <asp:BoundField DataField="CurrentStateId" ReadOnly="true" HeaderText="شماره مرحله فعلی تیکت" />
    <asp:BoundField DataField="TrackingCode" ReadOnly="true" HeaderText="کد رهگیری" />
    <asp:BoundField DataField="ServiceName" ReadOnly="true" HeaderText="نام خدمت" />
    <asp:BoundField DataField="SubServiceName" ReadOnly="true" HeaderText=" نام زیر خدمت" />
    <asp:BoundField DataField="strTicketDate" HeaderText="زمان ثبت تیکت" />
    <asp:BoundField DataField="CustomerName" HeaderText=" نام و نام خانوادگی مشتری" />
    <asp:BoundField DataField="StateName" HeaderText="وضعیت تیکت" />
    <asp:BoundField DataField="UserName" HeaderText="نام ثبت کننده تیکت" />

    <asp:ButtonField Text="بازخورد" CommandName="FeedBack" ButtonType="Link" >
        <ItemStyle ForeColor="#003399" />
    </asp:ButtonField>

</Columns>