4

目前我有一个下拉列表,它有自己的 sqldatasource 填充下拉列表。ddl 在一个 listviews 中,它也在 sqldatasource 上,插入项模板。但是,当我们单击插入时,传递给 dbase 的值是空值。

<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 插入参数中同时使用 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 回答