如何避免双列(预定义列+ selectcommand)?

时间:2011-03-17 08:15:56

标签: c# asp.net sql gridview

我有一个带有预定义列和selectcommand的gridview。为什么我要两次获得列?我想保留预定义列和select命令,但避免使列加倍。

<asp:GridView ID="gvMeldingen" runat="server" 
            AllowSorting="True" DataSourceID="MyDataSource" 
            onselectedindexchanged="GridView_SelectedIndexChanged"
            AutoGenerateSelectButton="True">
            <Columns>
                <asp:BoundField DataField="Melder" HeaderText="Melder" />
                <asp:BoundField DataField="Onderwerp" HeaderText="Onderwerp" />
                <asp:TemplateField HeaderText="Omschrijving">
                    <ItemTemplate>
                        <div style="overflow:auto; width: 500px; height: 150px;">
                            <asp:Label ID="lblOmschrijving" runat="server" Text='<%# Bind("Omschrijving")%>'></asp:Label>
                        </div>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="Fasedatum" HeaderText="Fasedatum" />
                <asp:BoundField DataField="Niveau 1" HeaderText="Niveau 1" />
                <asp:BoundField DataField="Niveau 2" HeaderText="Niveau 2" />
                <asp:BoundField DataField="Outlook_ID" HeaderText="OutlookID" />
            </Columns>
        </asp:GridView>
        <asp:SqlDataSource ID="MyDataSource" runat="server" 
            ConnectionString="<%$ ConnectionStrings:HELPDESK_OUTLOOKConnectionString3 %>" />

此代码显示了我如何使用select命令:

protected void MenuTabs1_MenuItemClick(object sender, MenuEventArgs e)
    {
        string select = @"SELECT 
        aanvrager.werknemersnaam AS Melder,
        hd_aanvragen.aanvraag_titel AS Onderwerp, 
        hd_aanvragen.aanvraag_omschrijving AS Omschrijving, 
        hd_aanvraag_fase.fase_datum AS Fasedatum, 
        hd_melding_niveau_1.niveau_omschrijving AS 'Niveau 1', 
        hd_melding_niveau_2.niveau_omschrijving AS 'Niveau 2',
        hd_aanvragen.outlook_id
        FROM hd_aanvragen
        INNER JOIN hd_meldingen         ON hd_meldingen.melding_id      =  hd_aanvragen.melding_id 
        INNER JOIN hd_melding_niveau_1  ON  hd_melding_niveau_1.niveau1_id = hd_meldingen.niveau1_id 
        INNER JOIN hd_melding_niveau_2  ON  hd_melding_niveau_2.niveau2_id = hd_meldingen.niveau2_id 
        INNER JOIN hd_aanvraag_fase     ON hd_aanvraag_fase.aanvraag_id =  hd_aanvragen.aanvraag_id
        INNER JOIN hd_statussen ON hd_statussen.status_id =  hd_aanvraag_fase.status_id 
        INNER JOIN  hd_werknemers AS oplosser ON oplosser.werknemer_Id =  hd_aanvraag_fase.werknemer_Id 
        INNER JOIN hd_werknemers  AS aanvrager ON aanvrager.werknemer_Id =  hd_aanvragen.werknemer_Id 
        WHERE hd_statussen.status_id = ";

        int index = Int32.Parse(e.Item.Value);
        multiTabs1.ActiveViewIndex = index;
        int status = 0;
        if (index == 1)
            status = 2;
        else if (index == 2)
            status = 16;
        else if (index == 3)
            status = 17;
        else if (index == 4)
            status = 4;
        MyDataSource.SelectCommand = select + status;
    }

1 个答案:

答案 0 :(得分:10)

您必须将AutoGenerateColumns属性添加到GridView,其值为“false”。 这将让GridView知道在绑定过程中不应该自动生成任何列。

祝你好运! :)