5

Assign a Textbox Value to the modal-box on the same page回答済み】

新しい質問: ボタンをクリックしたときに、モーダル ボックスのボタンが起動されなかったのはなぜですか? 何か不足していますか?

サーバー側でクリック イベントを処理するコードを追加しました。

Protected Sub Save_Button_Click(sender As Object, e As System.EventArgs) Handles Save_Button.Click
    //The code goes here
End Sub

Pls は、マークされた行で以下のコードを参照してください。


LinkBut​​ton がクリックされた後にモーダル ボックスを表示するコードを以下に示します。そして、私がやりたいのは、テキストボックスの値をに割り当てる方法です。

私はグリッドビューを持っています:

<asp:GridView ID="GV1" runat="server" DataSourceID="DS1" >
  <Columns>
    <asp:BoundField HeaderText="ID" DataField="ID"/>
    <asp:TemplateField ShowHeader="False">
      <ItemTemplate>
        <asp:LinkButton ID="Edit_Linkbutton" runat="server" CausesValidation="False" >
          <asp:Image ID="Edit_Linkbutton_Image" runat="server" ImageUrl="~/edit.png"></asp:Image>
        </asp:LinkButton>
      </ItemTemplate>
    </asp:TemplateField>
  </Columns>
</asp:GridView>

同じページ (これは、Gridview の Linkbutton がクリックされた後に表示されるモーダル ボックスとしての div です):

<div id="dialog-form" title="Modal Box">
    <input type="text" id="Textbox1" />

    #--------------------------------------------------------------------#
    #This button didn't get fired while clicked
    <asp:Button ID="Save_Button" runat="server" Text="Save"></asp:Button>
    #--------------------------------------------------------------------#

</div>

次に、コード ビハインドを使用して JavaScript 関数を LinkBut​​ton にアタッチします。

Dim myLinkButton As LinkButton

For i As Integer = 0 To GV1.Rows.Count - 1
  myLinkButton = DirectCast(GV1.Rows(i).Cells(1).FindControl("LinkButton"), LinkButton)
  myLinkButton.Attributes.Add("onclick", "shopModalPopup('" + .Rows(i).Cells(0).Text & "'); return false;")
Next

Rows(i).Cells(0)は Gridview の最初の列で、" ID" です。

Javascript コードは、Gridview コードと同じページにあります。

<script>
function shopModalPopup(id){
//show the modal-box
    $("#dialog-form").dialog("open");
    // ---> How to assign the 'id' value to the Textbox1 on the modalbox?
} 

$(function () {
    $("#dialog-form").dialog({
        autoOpen: false,
        height: 300,
        width: 350,
        modal: true
    });
});
</script>

上記のコードはモーダル ボックスを開きますが、モーダル ボックスの Textbox1 に値を割り当てません。

私が尋ねるつもりは、モーダルボックスにId値を割り当てる方法ですか? Textbox1関連する記事を検索しようとしましたが、モーダルボックスを他のページに分けています。ただし、この場合、モーダル ボックスは、クリックされた Linkbutton と同じページにあります。どうやってやるの?どうもありがとうございました。

4

3 に答える 3

1

テストされていませんが、動作するはずです。

インラインjsの使用を避け、buttonLinkのクリックイベントをバインドすることもできると思います

#dialog-form { display:none } /* CSS */

<script>  /* JS */
/* Assuming all dialogs share the same default Settings in this grid scenario */
var grid_modal_options = {
        height: 300,
        width: 350,
        modal: true
};
function shopModalPopup(id){
    var DataField = id;
    grid_modal_options.open = function(){
        $('#dialog-form #Textbox1').val( DataField );
        // OR
        // $('#dialog-form').find('textarea').val( DataField );
    };

    $("#dialog-form").dialog(grid_modal_options);
} 
</script>
于 2012-04-22T12:15:57.083 に答える
1

このようにJavaScriptイベントをバインドできます...

<asp:LinkButton ID="LinkButton" runat="server" OnClientClick="SomeMethod();" />

別の方法で、より詳細に制御できるコード ビハインドで JavaScript メソッドをバインドできます。例はこちら

JavaScript関数に引数を渡す場合、たとえばJavaScriptで引数に渡す場合は、次のように関数を定義する必要があります

function SomeFunction(arg1, arg2)
{

//your statements

}
于 2012-04-15T07:46:37.907 に答える
1

ポストバックが起動していない場合は、モーダルがフォーム内にない可能性がありますrunat=server。jQuery UI ダイアログを使用しているときに、これに遭遇したことがあります。<form></form>モーダルをタグ内に戻す必要があります。

モーダルを初期化した後、これを試してください:

$("#dialog-form").parent().appendTo('form:first');

于 2012-04-23T00:17:37.453 に答える