4

現在、ドロップダウンリストにデータを入力する独自のsqldatasourceを含むドロップダウンリストがあります。ddlはリストビュー内にあり、sqldatasourceにもあり、アイテムテンプレートを挿入します。ただし、[挿入]をクリックすると、dbaseに渡される値はnullになります。

<InsertItemTemplate>
                    <tr style="">
                        <td>
                            <asp:Button ID="InsertButton" runat="server" CommandName="Insert" 
                                Text="Insert" />
                            <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" 
                                Text="Clear" />
                        </td>
                        <td>
                            &nbsp;</td>
                        <td>
                            <asp:TextBox ID="td_t_idTextBox" runat="server" Text='<%# Bind("td_t_id") %>' Enabled="false" />
                        </td>
                        <td>

                            <asp:DropDownList ID="DropDownList2iit" runat="server" DataSourceID="SqlDataSource30" 
                            DataTextField="document_name" DataValueField="document_id" 
                            SelectedIndex='<%# Bind("td_docid") %>'>
                            </asp:DropDownList>
                        </td>
                    </tr>
                </InsertItemTemplate>

sqldatasourceのinsertparametersでdocument_idとtd_docidの両方を使用しようとしました。

<InsertParameters>
        <asp:Parameter Name="td_t_id" Type="Int32" />
        <asp:Parameter Name="td_docid" Type="Int32" />
        <asp:Parameter Name="document_id" Type="Int32" />
    </InsertParameters>

ただし、どちらの値を使用しても、null以外の実際の値は得られません。これはよくあることですか?

更新:私はoniteminsertingを使用して魔法の背後にある小さなコードを実行することになりました

protected void ListView2_OnItemInserting(object sender, EventArgs e)
{
    string sv = ((DropDownList)ListView2.InsertItem.FindControl("DropDownList2iit")).SelectedValue;
    SqlDataSource31.InsertParameters.Add("document_id", sv);

}

そしてそれは本来のように機能します。

4

2 に答える 2

0

この質問は非常に古いですが、誰かを助けるかもしれません。

ドロップダウンの値を selectedindex プロパティにバインドしています。代わりに SelectedValue にバインドする必要があります。このためのコードを書く必要はありません..

交換 :

SelectedIndex='<%# Bind("td_docid") %>'>

SelectedValue= '<%# Bind("td_docid") %>'
于 2014-09-27T11:09:38.937 に答える
0

以下のように試すことができます。(私は100%確信していますが、完全に機能することを願っています)

protected void ListView2_OnItemInserting(object sender, EventArgs e)
{
    string sv = ((DropDownList)e.Item.FindControl("DropDownList2iit")).SelectedValue;
    SqlDataSource31.InsertParameters.Add("document_id", sv);

}
于 2014-09-27T09:56:54.347 に答える