ASP: сетка данных, отображающая столбцы дважды

#c# #asp.net #datagrid

#c# #asp.net #сетка данных

Вопрос:

Я хочу, чтобы в моем DataGrid объекте были связанные столбцы. Код работал нормально до того, как я их добавил, но теперь я получаю повторяющиеся столбцы, и, в частности, один столбец, который мне вообще не нужен. Вот ASP:

         <ASP:DataGrid id="UserDataGrid" AutoGenerateColums="False" runat="server">
            <Columns>
                <asp:EditCommandColumn CancelText="Cancel" EditText="Edit" UpdateText="Update" HeaderText="Edit item">
                    <ItemStyle Wrap="False" />
                    <HeaderStyle Wrap="False"/>
                </asp:EditCommandColumn>
                <asp:BoundColumn DataField="Email" HeaderText="Email" ReadOnly="false" SortExpression="Email" />
                <asp:BoundColumn DataField="UserID" HeaderText="User ID" ReadOnly="false" SortExpression="UserID" />
                <asp:BoundColumn DataField="FullName" HeaderText="User Name" ReadOnly="false" SortExpression="FullName" />
            </Columns>
        </ASP:DataGrid>
  

И код, лежащий в основе:

     DataTable dtUsers = new DataTable();
    dtUsers = dataAccessManager.ExecuteSQLForTable("SELECT * FROM tblUser");
    UserDataGrid.DataSource = dtUsers;
    UserDataGrid.DataBind();
  

Все, что я прочитал, говорит о том, что значение AutoGenerateColumns false должно решить проблему, но это ничего не делает.

Ответ №1:

Глядя на предоставленный вами код, AutoGenerateColumns кажется, что он написан неправильно. Все должно работать нормально, если вы это исправите.

 <asp:DataGrid ID="UserDataGrid" AutoGenerateColumns="false" runat="server">
  

Комментарии:

1. Так много масок для лица. Я думал, VS2010 будет жаловаться на свойства, которые не соответствуют классу?

Ответ №2:

Решение: 1

Номинально свойство autogeneratecolumns равно true, и если мы привяжем сетку данных к таблице, в сетке данных будут отображаться все столбцы таблицы. Только когда вы установите для autogeneratecolumns значение false, вы можете разрешить сетке данных отображать столбцы, которые вы назначили.

Но, по вашим словам, это не работает. Хорошо

Решение: 2

Столбцы сетки данных можно скрыть

  DataTable dtUsers = new DataTable();
    dtUsers = dataAccessManager.ExecuteSQLForTable("SELECT * FROM tblUser");
    UserDataGrid.DataSource = dtUsers;
    UserDataGrid.DataBind();
    //Right Below line for hide columns
    UserDataGrid.Columns[0].Visible = false;//Hide First column of the DataGrid 
    UserDataGrid.Columns[1].Visible = false;//Hide Second column of the DataGrid 
    UserDataGrid.Columns[2].Visible = false;//Hide Third column of the DataGrid 
  

Решение: 3

Столбцы сетки данных можно удалить

  DataTable dtUsers = new DataTable();
    dtUsers = dataAccessManager.ExecuteSQLForTable("SELECT * FROM tblUser");
    UserDataGrid.DataSource = dtUsers;
    UserDataGrid.DataBind();
    //Right Below line for Remove columns

    UserDataGrid.Columns[0].Remove(); //Remove First column of the DataGrid 
    UserDataGrid.Columns[1].Remove(); //Remove Second column of the DataGrid 
    UserDataGrid.Columns[2].Remove(); //Remove Third column of the DataGrid 
  

Наилучшие пожелания