3

ですから、基本的にはしばらくの間、壁に頭をぶつけてきました。ここにあまりにも多くのコードを投げたらすみません、それを説明するためのより良い方法がわかりません。ItemTemplateが次のリピーターがあります。

<ItemTemplate>
    <div id='FileFrame<%#Eval("Id")%>' class="view">
        <userControl:ConfigFiles ID=<%#Eval("Id")%> runat="server" />
    </div>
</ItemTemplate>

divのダイアログボックスを設定するjQuery。

$(document).ready(function() {
        $(".view").dialog({
            autoOpen: false,
            title: "Configuration Files",
            buttons: {},
            height: 600,
            width: 800,
            open: function (type, data) { $(this).parent().appendTo("form"); }
        });
    });

そして、ダイアログを開くいくつかのjQuery。

$("#FileFrame"+ConfigId).dialog('open');

これで、ユーザーコントロールには、[チェックボックスをダウンロード]ボタンとともに、他のリピーター内に多数のチェックボックスがあります。問題は、デバッグを実行してボタンをクリックすると、aspxページで最初にChecked = "true"を設定しない限り、チェックボックスがチェックされたものとして読み取られないことです。

これは、私がやるべきだと思っていたことがうまくいかないコードの背後にあるスニペットです。

foreach (RepeaterItem item in FilesRepeater.Items)
    {
        CheckBox box = item.FindControl("DownloadFileCheckBox") as CheckBox;
        if (box.Checked) //<-- always false unless I set it to true in aspx,
                         //    then it's always true
            {/*do work here*/}
    }

助言がありますか?

4

2 に答える 2

0

私はいつか同様の問題を抱えていました(ポストバックはコントロール値を設定しません)。生成されたダイアログの問題は、フォームタグの外側にありました。

使用する

$("#FileFrame"+ConfigId).parent().appendTo($("form:first"));  

または同様のコードを使用して、ダイアログコードをフォーム内に移動します

これがお役に立てば幸いです。

于 2012-05-25T00:32:45.243 に答える
0

わかりました。正確に何が起こったのか(これは恐ろしいことです)は100%わかりませんが、コードは機能するようになりました。私の直感によると、JavaScriptの一部に何か問題があり、ブラウザーが次のJSを放棄するだけでした。結論として、私が質問に投稿した解決策は機能するということです。

主な問題は、私が呼び出していたJS関数がロードされていないか、呼び出しが行われた場所の範囲内になかったことでした。詳細がわかりましたら、必ずここに投稿します。

于 2012-06-04T14:26:27.603 に答える