0

なぜそれが起こっているのかを理解できるという問題があります

状況は、2 つのドロップダウンリストがあり、どちらも同じように設定されていることです

<asp:DropDownList ID="DocumentLink" runat="server" AutoPostBack="true" OnSelectedIndexChanged="DocumentLink_Changed">
                </asp:DropDownList>
                <asp:DropDownList ID="PageLink" runat="server" AutoPostBack="true" OnSelectedIndexChanged="PageLink_Changed">
                </asp:DropDownList>

彼らのイベントはこんな感じ

protected void DocumentLink_Changed(object sender, EventArgs e)
    {
        DropDownList DocumentLink = sender as DropDownList;
        LinkParam = DocumentLink.SelectedValue.ToString();
        DescriptionParam = DocumentLink.SelectedItem.Text;
    }
    protected void PageLink_Changed(object sender, EventArgs e)
    {
        DropDownList PageLink = sender as DropDownList;
        LinkParam = PageLink.SelectedValue.ToString();
        DescriptionParam = PageLink.SelectedItem.Text;
    }

「PageLink」という DropDown の場合、イベント ハンドラが起動します。ただし、「DocumentLink」の場合、イベント ハンドラはそうではありません。デバッグでは、ページの読み込みが発生していることがわかりますが、ページの読み込み後にイベントが停止し、DocumentLink_Changed に入ることはありません

興味深い点として、同じセットアップを使用して DropDownList の代わりに telerik radComboBox を使用すると、機能します。

<telerik:RadComboBox ID="DocumentLink" runat="server" AutoPostBack="true" OnSelectedIndexChanged="DocumentLink_Changed">
                </telerik:RadComboBox>

このようなイベントハンドラで

protected void DocumentLink_Changed(object sender, RadComboBoxSelectedIndexChangedEventArgs e)

残念ながら、プロジェクトにドロップダウンリストを使用する必要があります。

何が原因でしょうか?

アップデート

動作中のドロップダウンリストを取得し、動作しなかったドロップダウンリストに LINQ バインディングを使用しました。その結果、PageLink ドロップダウンリストが「DocumentLink」ドロップダウンリストと同じように動作するようになりました。これにより、問題はバインディング メソッドにある可能性があると思われますが、この 2 つは非常に似ており、ドロップダウン リストに結果が表示されます。

これは私の束縛です

if (selectedValue == 3)
            {
                DropDownList select = lvLinks.InsertItem.FindControl("PageLink") as DropDownList;
                List<IPW_Links_get_document_listResult> getList = (from i in lqContext.IPW_Links_get_document_list(0, "my stuff") select i).ToList();
                select.DataSource = getList;
                select.DataTextField = "DocumentName";
                select.DataValueField = "FolderPath";
                select.DataBind();

            }
            if (selectedValue == 2)
            {
                DropDownList select = lvLinks.InsertItem.FindControl("PageLink") as DropDownList;
                List<IPW_Links_get_available_pagesResult> getList = (from i in lqContext.IPW_Links_get_available_pages(PortalId) select i).ToList();
                select.DataSource = getList;
                select.DataTextField = "TabName";
                select.DataValueField = "TabPath";
                select.DataBind();
            }   
4

1 に答える 1

0

ドロップダウンリストを変更するステートメントがPageLoadイベントにあるかどうかを確認してください。ページロードイベントにデータバインディングステートメントまたはselectionresetステートメントがある場合は、それがispostback条件付きスニペットの下にあることを確認してください。

于 2012-11-01T06:30:16.507 に答える