Столбец GridView не отображается - PullRequest
0 голосов
/ 02 ноября 2011

Я пытаюсь добавить новый столбец в GridView, но он не отображается. Вот код, где я настраиваю DataTable и устанавливаю его в качестве источника данных GridView:

SqlDataAdapter da = new SqlDataAdapter();
DataTable dt = new DataTable();
SqlCommand cmd1;
DateTime d = DateTime.Now;
cmd1 = new SqlCommand("Proc_PopulateTitle", connection);
cmd1.CommandType = CommandType.StoredProcedure;
da.SelectCommand = cmd1;
da.Fill(dt);
dt.Columns.Add("Actions", Type.GetType("System.String"));
for (int i = 0; i < dt.Rows.Count; i++)
{                
    DateTime de = DateTime.Parse(dt.Rows[i][7].ToString());
    if (DateTime.Compare(de, d) < 0 || DateTime.Compare(de, d)==0)
    {
        dt.Rows[i]["Actions"] = "OPen";
    }
    else
    {
        dt.Rows[i]["Actions"] = "Expired";
    }
}
dt.GetChanges();
dt.AcceptChanges();


gvFaxView.DataSource = dt;

gvFaxView.DataBind();

Вот код разметки на стороне сервера GridView:

<asp:GridView ID="gvFaxView" runat="server" AllowPaging="True" AutoGenerateColumns="False"
    AutoGenerateSelectButton="True" CaptionAlign="Top" CssClass="text10" DataKeyNames="Fax_ID"
    PageSize="5" OnPageIndexChanging="gvFaxView_PageIndexChanging" OnSelectedIndexChanged="gvFaxView_SelectedIndexChanged">
    <FooterStyle BackColor="#348EC2" Font-Bold="True" ForeColor="White" />
    <Columns>
        <asp:TemplateField HeaderText="Fax Title">
            <ItemTemplate>
                <asp:Label ID="lbgvName" runat="server" Text='<%# Eval("Fax_Title") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Fax Date">
            <ItemTemplate>
                <asp:Label ID="lbgvType" runat="server" Text='<%# Eval("Fax_Date") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Fax Status">
            <ItemTemplate>
                <asp:Label ID="lbgvfName" runat="server" Text='<%# Eval("Fax_status") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Fax Expire Date">
            <ItemTemplate>
                <asp:Label ID="lbgvNic" runat="server" Text='<%# Eval("Fax_Exp_Date") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Open/Expire">
            <ItemTemplate>
                <asp:Label ID="lbgvopenexp" runat="server" Text="Open"></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
    <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
    <EditRowStyle BackColor="#999999" />
    <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
    <PagerStyle BackColor="Maroon" ForeColor="White" HorizontalAlign="Center" />
    <HeaderStyle BackColor="Maroon" Font-Bold="True" ForeColor="White" />
    <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
</asp:GridView>

Ответы [ 2 ]

2 голосов
/ 02 ноября 2011

Я бы установил AutoGenerateColumns = False и удалил бы весь тэг <Columns>...</Columns>.Поскольку вы в значительной степени генерируете свой собственный DataTable, просто установите его как источник и связывание.ASP должен сделать все остальное.

0 голосов
/ 02 ноября 2011

Поскольку это WebForms, вам может потребоваться выполнить ваш код, прежде чем форма будет нарисована в методе, подобном Page_PreInit.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...