DataGrid устанавливает ширину столбца программно - PullRequest
0 голосов
/ 28 декабря 2011

У меня есть следующий фрагмент кода:

protected void Page_Load(object sender, EventArgs e)
{
    var src1 = Page.DataContext.ExtranetTypes;
    var res1 = from row in src1 select row;

    var src2 = Page.DataContext.ExtranetDocuments;
    var res2 = from row in src2 select row;

    var query = from r1 in res1
                join r2 in res2 on r1.ID equals r2.FileTypeID
                select new { r2.PublicationDate, Title = r2.Title, Type = r1.Title };

    DocumentGrid.DataSource = query;
    DocumentGrid.DataBind();
}

Я хотел бы установить ширину столбцов, но я не могу установить ширину для каждого столбца, потому что запрос еще не выполнен.

DocumentGrid.Columns[1].ControlStyle.Width

Выдает ошибку, поскольку столбцы вычисляются при выполнении запроса и выполняются в самый последний момент, возможный из-за позднего связывания.Есть ли способ установить ширину этих столбцов?

Ответы [ 3 ]

1 голос
/ 28 декабря 2011

Сетка данных или вид сетки генерируется, когда у источника данных есть что отображать.Если отображать нечего, сетка не отображается на странице.Но если вы хотите отобразить сетку в случае отсутствия данных, добавьте скелет с данными или списком, чтобы отобразить сетку, и тогда ваш код будет работать.Также, если вы вставите HTML-код сетки, это будет отличная помощь

0 голосов
/ 28 декабря 2011

Я использовал BoundFields, как было предложено в одном из комментариев к моему вопросу.

result:

<asp:GridView ID="DocumentGrid" runat="server" AutoGenerateColumns="False">
    <Columns>
        <asp:BoundField HeaderText="Publication Date" DataField="PublicationDate" ItemStyle-Width="120px"/>
        <asp:BoundField HeaderText="Title" DataField="Title" ItemStyle-Width="400px"/>
        <asp:BoundField HeaderText="Type" DataField="Type" ItemStyle-Width="100px"/>
    </Columns>
</asp:GridView>

Просто убедитесь, что для столбцов autogenerate установлено значение false, иначе вы получите дополнительныестолбцы.

0 голосов
/ 28 декабря 2011

Использование

DocumentGrid.DataSource = query.ToList();

тогда вы можете установить ширину программно. Это потому, что query.ToList () фиксирует данные и делает их читаемыми с помощью свойства DocumentGrid.DataSource.

...