2013-07-31 4 views
1

В моем gridview у меня есть следующие вещи, как показано в моем привязке sql с gridview в page_load, поскольку я хочу, чтобы он загружался при открытии страницы.Как скрыть определенное значение (столбец) из gridview?

SqlConnection conn = new SqlConnection(); 
     conn.ConnectionString = "Data Source = localhost; Initial Catalog = MajorProject; Integrated Security= SSPI"; 
     conn.Open(); 

     DataSet ds = new DataSet(); 

     SqlDataAdapter da = new SqlDataAdapter("SELECT memberreportid, typeofcrime, crdatetime, address, detail, incidentdate, incidenttime, property, victim, suspect from memberreport", conn); 
     da.Fill(ds); 

     GWCase.DataSource = ds; 
     GWCase.DataBind(); 

     conn.Close(); 

Однако, я пытаюсь предотвратить появление столбца свойств, жертвы и подозреваемого в виде сетки. Я использовал

Visible = false; 

в моем gridview, но он полностью удаляет сетку (конечно).

Я попытался с помощью BoundField, как показано ниже в моем GridView и установить видимость, как ложную конкретно установить столбец visiblity, как ложного

<asp:GridView ID="GWCase" runat="server" BackColor="#CCCCCC" BorderColor="#999999" BorderStyle="Solid" BorderWidth="3px" CellPadding="4" CellSpacing="2" ForeColor="Black" Width="100%" AutoGenerateSelectButton="True" OnSelectedIndexChanged="GWCase_SelectedIndexChanged"> 
     <FooterStyle BackColor="#CCCCCC" /> 
     <HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" /> 
     <PagerStyle BackColor="#CCCCCC" ForeColor="Black" HorizontalAlign="Left" /> 
     <RowStyle BackColor="White" /> 
     <SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" /> 
     <SortedAscendingCellStyle BackColor="#F1F1F1" /> 
     <SortedAscendingHeaderStyle BackColor="#808080" /> 
     <SortedDescendingCellStyle BackColor="#CAC9C9" /> 
     <SortedDescendingHeaderStyle BackColor="#383838" /> 

    <Columns> 

     <asp:BoundField DataField="property" HeaderText="property" SortExpression="property" Visible="false"/> 
     <asp:BoundField DataField="victim" HeaderText="victim" SortExpression="victim" Visible="false" /> 
     <asp:BoundField DataField="suspect" HeaderText="suspect" SortExpression="suspect" Visible="false" /> 

    </Columns> 
    </asp:GridView> 

Однако, по-прежнему отображается в столбце. Как удалить этот 3 столбца из gridview. Пожалуйста, не просите меня удалить атрибут 3 из моей инструкции sql, поскольку мне нужны данные для дальнейших функций.

Я также попробовал этот метод я нашел в этом thread в SO

protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     e.Row.Cells[7].Visible = false; 
     e.Row.Cells[8].Visible = false; 
     e.Row.Cells[9].Visible = false; 
    } 

Но оно не работает, а также:/

С уважением.

ответ

1

Вам необходимо добавить этот код в созданное строку.

protected void yourGrid_RowCreated(object sender, GridViewRowEventArgs e) 
    { 
    e.Row.Cells[7].Visible = false; 
    e.Row.Cells[8].Visible = false; 
    e.Row.Cells[9].Visible = false; 
    } 

Edit:

Другой вариант может быть, что после присвоения источника данных на сетку писать эти строки после этой строки в коде

GWCase.DataSource = ds; 
    GWCase.DataBind(); 

    GWCase.Columns[7].Visible = false; 
    GWCase.Columns[8].Visible = false; 
    GWCase.Columns[9].Visible = false; 
+0

Это все тот же –

+0

@TeoChuenWeiBryan См. Мой обновленный ответ – Ehsan

+0

Я поместил свой источник данных и привязку в свою page_load. И если бы я должен был вставить это в page_load, я получу эту ошибку 'Ошибка 'System.EventArgs' не содержит определения для 'Row' и никакого метода расширения 'Row', принимающего первый аргумент типа 'System. EventArgs 'можно найти (вы не указали директиву использования или ссылку на сборку?) ' –

0

Установите свойство AutoGenerateColumns вашего GridView в false (по умолчанию это верно). Затем добавьте все строки, которые вы хотите показать в тегах <Columns>, как вы уже делали, с столбцами, которые вы не хотите показывать. Тег Columns не действует, пока вы автоматически генерируете столбцы.

+0

Однако могу ли я спросить, правильны ли мои синтаксисы столбцов и полей? По моему мнению, Datafield - это мое имя базы данных, заголовочный текст будет тем, что появляется в заголовке gridview, но что касается сортировки. Я googled, и он говорит сортировку данных, которые мне действительно не нужны. могу я просто удалить его? –

+0

Да, ваш синтаксис выглядит корректно для меня. Ваше понимание DataField и HeaderText также верно, и вы можете удалить SortExpression, если вы не хотите, чтобы пользователь сортировал определенные столбцы вашего GridView. В качестве заголовка HeaderText это имя базы данных столбца, который вы хотите отсортировать, когда пользователь нажимает на текст заголовка столбца. – Rob

+0

Хм, я сделал это, и я также удаляю видимость. Однако я использовал этот синтаксис 'lblproperty.Текст = GWCase.SelectedRow.Cells [8] .Text; lblvictim.Text = GWCase.SelectedRow.Cells [9] .Text; lblsuspect.Text = GWCase.SelectedRow.Cells [10] .Text; 'чтобы отобразить значение столбца 3 в метке, когда я выбираю строку, но метка ничего не показывает. –

Смежные вопросы