Я работаю над многоцелевой страницей, и вместо того, чтобы добавлять несколько сеток на одну и ту же страницу, мы хотели использовать один 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.





попробуйте событие загрузки страницы вместо инициализации страницы
@ [Митчел Селлерс]: вы звоните в базу данных? если да, опубликуйте код, это должно быть что-то простое ...
Похоже, вы делаете что-то вроде
If (!Page.IsPostBack)
{
//create + add columns - set datasource etc
}
Если это так - тогда вам нужно удалить проверку и всегда генерировать столбцы (я бы также предложил отключить viewstate для datagrid)
Вам нужно будет опубликовать код привязки данных. Вероятно, в этом и заключается ошибка.