Динамические столбцы и источники данных с помощью .NET Grid View - PullRequest
1 голос
/ 24 ноября 2008

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

Итак, для этого у нас есть что-то вроде следующего в aspx: код в Page_Init очень прост, добавив несколько столбцов, затем установив свойство DataSourceID GridView.

ASPX:

<asp:GridView ID="gvDisplay" runat="server" AutoGenerateColumns="false" CellPadding="5"
    width="100%" AllowPaging="true" PageSize="200" DataSourceID="wuProcessLogDataSource">
    <RowStyle CssClass="RowStyle" />
    <AlternatingRowStyle CssClass="AlternatingRowStyle" />
    <HeaderStyle CssClass="HeaderStyle" />  
</asp:GridView>
<asp:ObjectDataSource id="wuProcessLogDataSource" runat="server" EnablePaging="True" 
    SelectMethod="GetWUProcessLog" TypeName="Project.Objects.WUProcessLogDal"
    SelectCountMethod="GetWUProcessLogTotalRecords">
   <SelectParameters>
    <asp:QueryStringParameter QueryStringField="w" DefaultValue="0" Name="workunitId" />
   </SelectParameters>    
</asp:ObjectDataSource>

Источник данных объекта существует и работает как триггер загрузки первой страницы без каких-либо проблем. Однако, как только вы нажимаете на кнопку страницы, сетка исчезает со страницы? Есть идеи?

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

Ответы [ 2 ]

1 голос
/ 03 апреля 2009

Похоже, вы делаете что-то вроде

If (!Page.IsPostBack)
{
   //create + add columns - set datasource etc
}

Если это так, то вам нужно снять флажок и всегда генерировать столбцы (я бы также предложил отключить viewstate для сетки данных)

1 голос
/ 24 ноября 2008

попробуйте событие загрузки страницы вместо инициализации страницы

...