0

この関数をJavaScriptで記述しました

function CheckBeforeAddNew(btnId, gridSelected) {
$(btnId).click(function () {
      for (var i in gridSelected) {
        return true;
      };
      Ext.Msg.alert('Add', 'Can not do without selected item');
      {
        return false;
      };
    });
};

そして、この関数をボタンに到達させようとすると、次のようにクリックします。

<ext:Button runat="server" ID="btnAddNewToMme" Cls="topButton" Text="Add new" Icon="Add" OnDirectClick="btnAddNewToMme_OnDirectClick">
                    <DirectEvents>
                        <Click Before="CheckBeforeAddNew('#<%= btnAddNewToMme.ClientID%>','<%=dlOuterObject.Grid_ClientID %>.selectedIds')"></Click>
                    </DirectEvents>
                </ext:Button>

エラーが発生しましたReferenceError: $ is not defined $(btnId).click(function () {

この関数を呼び出してこれを機能させるにはどうすればよいですか?

編集: もちろん、私はこの機能を備えたファイルを私の.aspx好きなものに追加しました

<script type="text/javascript" src="Scripts/Synchronization.js"></script>

編集1:firebug で私は何よりも先に見ることができます

<script type="text/javascript" src="Scripts/jquery-1.4.1.min.js"></script> したがって、jQueryは正しくロードされます

Edit2: @geoffreyが提供する関数に変更を加えました:

var CheckBeforeAddNew = function (gridSelected) {
for (var i in gridSelected) {
    return true;
}
Ext.Msg.alert('Error', 'Something wrong!');
return false;

};

しかし、それを使用する

<ext:Button runat="server" ID="btnAddNewToMme" Cls="topButton" Text="Add new" Icon="Add" OnDirectClick="btnAddNewToMme_OnDirectClick">
                <DirectEvents>
                    <Click Before="return CheckBeforeAddNew('<%= dlOuterObject.Grid_ClientID %>.selectedIds');"></Click>
                </DirectEvents>
            </ext:Button>

私はこれを機能させることができません:

if (grid.getSelectionModel().getCount() < 1) {
   Ext.Msg.alert('Error', 'Please select an Item');

   return false;
}

私のdlOuterObjectはUserControlグリッドを含んでいます。それで、それをどのように機能させるかについてのアイデアはありますか?

助けてくれてありがとう:)

4

1 に答える 1

1

元のコードサンプルにはいくつかの問題があります。

この<%= btnAddNewToMme.ClientID%>構文は、ASP.NETマークアップ構成では機能しません。<%# %>DataBinding構文を使用する必要があります。

CheckBeforeAddNewJavaScript関数はを使用しないためbtnId、これを渡す必要はありません。

jQueryも使用する必要はありません。必要なすべての機能はExtJSフレームワークに含まれています。フレームワークはすでにに含まれていますPage

のインスタンスをGridPanelJavaScript関数に渡してから、関数で選択されたアイテムの数を取得/チェックするためのロジックをカプセル化します。

これは、Ext.NET2.0を使用したシナリオを示す完全に機能するサンプルです。v1.xを使用している場合、コード.Beforeハンドラーは基本的に同じですが、GridPanelモデルの構成がわずかに異なります。

<%@ Page Language="C#" %>

<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>

<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!X.IsAjaxRequest)
        {
            var store = this.GridPanel1.GetStore();

            store.DataSource = this.Data;
            store.DataBind();
        }
    }

    private object[] Data
    {
        get
        {
            return new object[]
            {
                new object[] { "3m Co" },
                new object[] { "Alcoa Inc" },
                new object[] { "Altria Group Inc" },
                new object[] { "American Express Company" },
                new object[] { "American International Group, Inc." },
                new object[] { "AT&T Inc." },
                new object[] { "Boeing Co." },
                new object[] { "Caterpillar Inc." },
                new object[] { "Citigroup, Inc." },
                new object[] { "E.I. du Pont de Nemours and Company" },
                new object[] { "Exxon Mobil Corp" },
                new object[] { "General Electric Company" }
            };
        }
    }

    protected void Button1_Click(object sender, DirectEventArgs e)
    {
        X.Msg.Notify("Message", "Button1 Clicked").Show();
    }
</script>

<!DOCTYPE html>

<html>
<head runat="server">
    <title>Simple Array Grid - Ext.NET Examples</title>

    <script type="text/javascript">
        var checkSelected = function (grid) {
            if (grid.getSelectionModel().getCount() < 1) {
                Ext.Msg.alert('Error', 'Please select an Item');

                return false;
            }

            return true;
        };
    </script>
</head>
<body>
    <ext:ResourceManager runat="server" />

    <ext:GridPanel 
        ID="GridPanel1"
        runat="server" 
        Title="Example" 
        Width="600" 
        Height="350">
        <Store>
            <ext:Store runat="server">
                <Model>
                    <ext:Model runat="server">
                        <Fields>
                            <ext:ModelField Name="company" />
                        </Fields>
                    </ext:Model>
                </Model>
            </ext:Store>
        </Store>
        <ColumnModel>
            <Columns>
                <ext:Column runat="server" Text="Company" DataIndex="company" Flex="1" />
            </Columns>            
        </ColumnModel>       
        <SelectionModel>
            <ext:RowSelectionModel runat="server" Mode="Multi" />
        </SelectionModel>
        <Buttons>
            <ext:Button runat="server" Text="Submit" Icon="Accept">
                <DirectEvents>
                    <Click OnEvent="Button1_Click" Before="return checkSelected(App.GridPanel1);" />
                </DirectEvents>
            </ext:Button>
        </Buttons>
    </ext:GridPanel>
</body>
</html>

お役に立てれば。

于 2012-08-30T16:41:32.037 に答える