VB.net gridview показывает больше данных, чем я хочу - PullRequest
2 голосов
/ 23 сентября 2011

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

<asp:Content ID="Content2" ContentPlaceHolderID="body" Runat="Server">
<br /><br /><br />
<asp:linkbutton id="btnAll" runat="server" text="ALL" onclick="btnAll_Click" />
<asp:repeater id="rptLetters" runat="server" datasourceid="dsLetters">
<headertemplate> | </headertemplate>
<itemtemplate>
<asp:linkbutton id="btnLetter" runat="server" 
onclick="btnLetter_Click" text='<%#Eval("Letter")%>' />
</itemtemplate>

<separatortemplate> | </separatortemplate>
</asp:repeater>

<asp:sqldatasource id="dsLetters" runat="server" connectionstring="<%$ ConnectionStrings:ProductsConnectionString %>"
selectcommand="SELECT DISTINCT LEFT(ProductName, 1) AS [Letter] FROM [Product]">
</asp:sqldatasource>

<asp:gridview id="gvProducts" runat="server" datakeynames="ProductID"
datasourceid="dsProductLookup" style="margin-top: 12px;">
<Columns>
  <asp:HyperLinkField DataNavigateUrlFields="ProductID"
 DataNavigateUrlFormatString="Product/Default.aspx?ID={0}" 
 DataTextField="ProductName" HeaderText="Product Name" 
 SortExpression="ProductName" />
</Columns>

</asp:gridview>

<asp:sqldatasource id="dsProductLookup" runat="server" 
connectionstring="<%$ ConnectionStrings:ProductsConnectionString %>"
selectcommand="SELECT ProductID, ProductName FROM [Product] ORDER BY [ProductName]">
</asp:sqldatasource>

</asp:Content>

CodeBehind:

Protected Sub btnAll_Click(sender As Object, e As EventArgs)
    gvProducts.DataBind()
End Sub

Protected Sub btnLetter_Click(ByVal sender As Object, ByVal e As EventArgs)
    Dim btnLetter As LinkButton = TryCast(sender, LinkButton)
    If btnLetter Is Nothing Then
        Return
    End If
    dsProductLookup.SelectCommand = [String].Format("SELECT ProductID, ProductName
    FROM [Product] WHERE ([ProductName] LIKE '{0}%') ORDER BY [ProductName]",
    btnLetter.Text)
End Sub

enter image description here

1 Ответ

6 голосов
/ 23 сентября 2011

Добавьте атрибут AutoGenerateColumns="False". В противном случае GridView просматривает ваш источник данных и автоматически добавляет к нему столбцы на основе свойств объектов источника данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...