0

XML データを含むテーブルを作成したページがあります。以下のコードでは、SQL から XML データを作成する WebMethod をコーディングしました。しかし、私のページはこの WebMethod を呼び出しておらず、このテーブルを作成していません。これは理にかなっていますか?

$(document).ready(function () {
        source =
        {
            datatype: "xml",
            datafields: [
                { name: 'User', type: 'string' },
                { name: 'RequestDate', type: 'DateTime' },
                { name: 'SituationDesc', type: 'string' }
            ],
            async: false,
            record: 'Table',
            url: 'Tickets.aspx/GetTickets',
        };
        var dataAdapter = new $.jqx.dataAdapter(source, {
        contentType: 'application/json; charset=utf-8'}
        });
        $("#jqxgrid").jqxGrid(
        {
            width: 670,
            source: dataAdapter,
            theme: 'classic',
            columns: [
              { text: 'Product Name', datafield: 'User', width: 250 },
              { text: 'Date', datafield: 'RequestDate', cellsalign: 'right', cellsrenderer: cellsrenderer, width: 100 },
              { text: 'Situation', datafield: 'SituationDesc', cellsalign: 'right', cellsrenderer: cellsrenderer, width: 100 },
            ]
        });
    });

<body class='default'>
<div id='jqxWidget' style="font-size: 13px; font-family: Verdana; float: left;">
    <div id="jqxgrid">
    </div>
</div>

[WebMethod]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Xml)]
public string GetTickets()
{
    string query = "SELECT [User],RequestDate,SituationDesc, FROM Ex";
    SqlCommand cmd = new SqlCommand(query);
    DataSet data = GetData(cmd);
    System.IO.StringWriter w = new System.IO.StringWriter();
    data.Tables[0].WriteXml(w, XmlWriteMode.WriteSchema, false);
    return w.ToString();
}

private DataSet GetData(SqlCommand cmd)
{

    string strConnString = ConfigurationManager.ConnectionStrings["XX"].ConnectionString;
    using (SqlConnection con = new SqlConnection(strConnString))
    {
        using (SqlDataAdapter sda = new SqlDataAdapter())
        {
            cmd.Connection = con;
            sda.SelectCommand = cmd;
            using (DataSet ds = new DataSet())
            {
                sda.Fill(ds);
                return ds;
            }
        }
    }
}
4

1 に答える 1

1

Ajax が呼び出す静的メソッドを実際に宣言していません。

この部分は確かに間違っていますが、すべてのコードを調べたわけではありません..

[WebMethod]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Xml)]
public string GetTickets()
{

「静的」宣言に注意してください

    [WebMethod]
    [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Xml)]
    public static string GetTickets()
    {

また、Firebug (または類似のもの) をインストールしてみてください。メソッドを呼び出そうとしているときに、ブラウザー内からどのようなエラーが発生しているかを確認できます。これにより、考えられる余分なエラーをさらに特定することができます。

private DataSet GetData(SqlCommand cmd)また、上記の変更を行った後は、アクセスできないことを宣言する必要がstaticあります。

于 2013-07-03T15:19:00.257 に答える