0

まず第一に、私はまだ私のWeb開発者の足を私の下に置いています。SOの投稿、ブログ、ニュースグループ、記事の山をくまなく調べましたが、問題を解決できないようです。これは、私が見た少なくとも10の異なる投稿と非常によく似ています。

表示および選択列として機能するASPグリッドビューがあります。[選択]をクリックすると、データが詳細ビューに表示されます。ドロップダウンボックスにする必要のあるフィールドが1つありますが、値を変更して[更新]をクリックすると、コマンドに送信される値が元の値になります。

ページマークアップ:

                    <asp:TemplateField HeaderText="Planner Name">
                        <ItemTemplate>
                        </ItemTemplate>
                        <EditItemTemplate>
                        <asp:DropDownList ID="cboCurrentPlanner" runat="server" DataSourceID="plannerDataSource" 
                        DataTextField="planner_name" DataValueField="planner_id" SelectedValue='<%# Eval("planner_id") %>' AutoPostBack="true" ></asp:DropDownList>
                        </EditItemTemplate>
                    </asp:TemplateField>
                <asp:CommandField ShowEditButton="True" />
            </Fields>

            <FooterStyle BackColor="#CCCC99" ForeColor="Black" />
            <HeaderStyle BackColor="#333333" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="White" ForeColor="Black" HorizontalAlign="Right" />
        </asp:DetailsView>

sqlDataSource:

            SelectCommand="SELECT vendor_key, vendor, planner_name, street, city, state_country, planner_id, country FROM V_MAP_MarkerInfo WHERE (vendor_key = @vendor_key)" 
            UpdateCommand="MAP_usp_webUpdatePlanToVendor" 
            UpdateCommandType="StoredProcedure" onupdating="mapDetailSource_Updating" >
            <SelectParameters>
                <asp:ControlParameter ControlID="GridView1" Name="vendor_key" 
                    PropertyName="SelectedValue" Type="Int32" />
            </SelectParameters>
            <UpdateParameters>
                <asp:Parameter Name="vendor_key" Type="String" />
                <asp:Parameter Name="planner_id" Type="Int32" />
                <asp:Parameter Name = "vendor" Type="String" />
            </UpdateParameters>
        </asp:SqlDataSource>

        <asp:SqlDataSource ID="plannerDataSource" runat="server" 
            ConnectionString="<%$ ConnectionStrings:vendor_mapConnectionString %>" 
            SelectCommand="SELECT [planner_id], [planner_name] FROM [MAP_planners]" 
            OldValuesParameterFormatString="original_{0}">
        </asp:SqlDataSource>

ストアドプロシージャコードは投稿しません。機能していることはわかっています。元の値は、パラメータに到達する唯一の値です。

ポストバックのさまざまな組み合わせを試しまし<%# Bind/Eval() %>たが、適切な組み合わせが見つかりません。

[選択]をクリックすると、ドロップダウンリストで現在のプランナーが選択されます。新しいプランナーを選択して[更新]をクリックすると、プランナーが更新されます。なぜこれがそんなに難しいのか、それを難し​​くするために私が何を台無しにしたのかはわかりませんが、私は終わりに近づいています。可能であれば、それを機能させる魔法のコード行だけでなく、何が起こっているのかについて説明したいと思います。

Flabbergastedは控えめな表現です。

編集:ViewStateEnbabled="true"ドロップダウンリストに追加され、selectedIndexChangedイベントが発生しています。

もう一度編集:planner_idを変更してモニターを<asp:ControlParameter>追加しました。値はいたるところにあります。しかし、どこでリセットされているのかわかりません。DetailsView1_OnDataBindMapDataSource1_updating

4

2 に答える 2

0

または設定をEnableViewState="false"設定しましたか?ビューステートが有効になっていない場合、コントロールは常にデフォルト値を選択した値として使用します。これは、aspxレベルまたはascxレベルで設定できます。@Control@Page

http://msdn.microsoft.com/en-us/library/ms972976.aspx

于 2013-03-26T22:59:31.633 に答える
0

だから私は完全な馬鹿です、DetailsView DataKeyNamesプロパティが正しく設定されていませんでした。ウィザードのキーとして誤って「planner_id」を追加してしまいました。

コードはずっと問題ありませんでした。皆さん、ありがとうございましたが、私は道に迷っています!

于 2013-03-28T11:49:23.570 に答える