GridView,SQL和参数

时间:2014-04-03 06:37:59

标签: asp.net sql vb.net gridview

我告诉你我的问题(我为我的英语道歉......):

我有一个包含我的数据库数据的GridView,来自两个SqlDataSource,一个用于我的简单项目,第二个用于下拉列表。 他们是:

<asp:SqlDataSource ID="source_personnes" runat="server" 
        ConnectionString="<%$ ConnectionStrings:Formation_2014ConnectionString %>" 
        SelectCommand="SELECT Personnes.id_personne, Personnes.nom_personne, Personnes.prenom_personne, Personnes.actif_personne, Personnes.agence_personne,  Organismes.raison_sociale  FROM Personnes INNER JOIN Organismes ON Personnes.agence_personne = Organismes.id_organisme WHERE (Personnes.actif_personne = 1)"
        UpdateCommand="UPDATE Personnes SET nom_personne=@nom_personne, prenom_personne=@prenom_personne, agence_personne = @id_organisme WHERE (id_personne = @id_personne) "
        DeleteCommand="UPDATE Personnes SET actif_personne = 0 WHERE (id_personne = @id_personne)">

        <SelectParameters>
            <asp:Parameter DefaultValue="1" Name="actif_personne" Type="Int16" />
        </SelectParameters>

        <UpdateParameters>
            <asp:ControlParameter Name ="id_organisme" ControlId="id_organisme" />
        </UpdateParameters>
    </asp:SqlDataSource>

第二个:

<asp:SqlDataSource ID="source_organisme" runat="server" 
    ConnectionString="<%$ ConnectionStrings:Formation_2014ConnectionString %>" 
    SelectCommand="SELECT * FROM [Organismes]">
</asp:SqlDataSource>

为了解释一下,我的数据库中有以下两个表:

Personnes (id_personne(PK),nom_personne,prenom_personne,actif_personne,#agent_personne)

Organismes (id_organisme(PK),raison_sociale,actif_organisme)

agence_personne与id_organisme有关。

我的目标是通过GridView的集成更新功能,在数据库中更改表Personnes的条目。

感谢在MSDN上发现的Tuto,herehere,我设法建立了我的下拉列表,但是一旦你进入第19到20步,我不会像我所说的那样制作数据绑定。所以我有一个完全独立的清单。

我现在给你GridView的代码:

<asp:GridView ID="GridModif" runat="server" AllowPaging="True" AutoGenerateColumns="False"
     DataKeyNames="id_personne" DataSourceID="source_personnes" SkinID="dataGrid">
    <Columns>

        <asp:TemplateField HeaderText="id" SortExpression="id_personne">
            <EditItemTemplate>
                <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("id_personne") %>'></asp:TextBox>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label ID="Label1" runat="server" Text='<%# Bind("id_personne") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>

        <asp:BoundField DataField="nom_personne" HeaderText="Nom" SortExpression="nom_personne" />
        <asp:BoundField DataField="prenom_personne" HeaderText="Prénom" SortExpression="prenom_personne" />

        <asp:TemplateField HeaderText="Agence" SortExpression="raison_sociale">
            <EditItemTemplate>
                <asp:DropDownList ID="id_organisme" runat="server" 
                    DataSourceID="source_organisme" DataTextField="raison_sociale" 
                    DataValueField="id_organisme" AutoPostBack="True">
                </asp:DropDownList>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label ID="id_organisme" runat="server" Text='<%# Bind("raison_sociale") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>

        <asp:CommandField ShowEditButton="true" />
        <asp:CommandField ShowDeleteButton="true" DeleteText="Désactiver" />

    </Columns>
</asp:GridView>

我的最终目标:当我点击我的&#34;编辑&#34;按钮,我列表中的选定项目是表格Personne中的ID,我会从&#34; Organismes&#34;中选择一个元素。表并在我的更新参数中使用它来更新&#34; Personnes&#34;桌子。 我在其他法国论坛发布了这个,但我没有答案,我希望你能帮助我更多!

- 编辑 - 我已经忘了发布我的错误&gt;&lt; - &GT; System.InvalidOperationException:找不到控件&#39; id_organisme&#39;在ControlParameter&#39; id_organisme

非常感谢,

Krishnak

1 个答案:

答案 0 :(得分:0)

我终于找到了!

所以在我的DropDown列表中,我绑定了一个选定的值:

            <asp:TemplateField HeaderText="Agence" SortExpression="raison_sociale">
            <EditItemTemplate>
                <asp:DropDownList ID="agence_personne" runat="server" 
                    DataSourceID="source_organisme" DataTextField="raison_sociale" 
                    DataValueField="id_organisme" AutoPostBack="True" 
                    SelectedValue='<%# Bind("agence_personne") %>' >
                </asp:DropDownList>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label ID="agence_personne" runat="server" Text='<%# Bind("raison_sociale") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>

我只是删除了SqlDataSource中的Update Parameters。在那之后,我的更新工作完美!