2017-07-04 14 views
0

のテキストボックスにデータテーブル値を取得するときにヌル値を取得すると、その時点で静的メソッドでデータ可能オブジェクトを介してデータを取得しています(つまり、エラーを表示します。オブジェクト)。しかし、私がその時点でデバッグモードを行っているとき、データテーブルにデータが表示されるので、テキストボックスでnull値を取得する方法を混乱させます。データ 静的Webメソッド

が、このデータはで cnorGST.Textすなわち、テキストボックスに与えている私は、デバッグモードでやっている

"dtqrySelCnorGtinNo.Rows[0]["TinNo1"].ToString();" 

この行が示したときここ

は私のコード

[WebMethod] 
    public static void GetCnorGSTNo(string Param1) 
    { 
     Page page = (Page)HttpContext.Current.Handler; 
     TextBox cnorGST = (TextBox)page.FindControl("txtbx_cnortin"); 

     DataAccess clsObjDataAccess = new DataAccess(); 
     string qrySelCnorGtinNo = "select TinNo1 from CnorMaster where CnorName = '" + Param1 + "'"; 
     DataTable dtqrySelCnorGtinNo = new DataTable(); 
     dtqrySelCnorGtinNo = clsObjDataAccess.GetDataTable(qrySelCnorGtinNo); 
     if (dtqrySelCnorGtinNo.Rows.Count > 0) 
     { 
      cnorGST.Text = dtqrySelCnorGtinNo.Rows[0]["TinNo1"].ToString(); 
     } 
    } 

ですその時間はエラーを表示します。つまり、オブジェクト参照はオブジェクトのインスタンスに設定されません。

この問題を解決するのを手伝ってください。

ありがとうございます。

+1

Webメソッドはページのライフサイクルのコンテキスト外で実行されるため、コントロールはサーバー上に存在しません。あなたはそれらにアクセスすることはできません。 https://stackoverflow.com/questions/31514188/how-to-access-page-controls-inside-a-static-web-method –

+0

私はコントロールにアクセスできます。値がどんな値であっても、その値を持つデータテーブルには、テキストボックスを表示したいからです。それではどうしたらいいですか? – karan

+1

webmethodでデータベースにアクセスできます。テキストボックスに表示する値を返します。次に、このテキストをclientsideのjavascriptで割り当てます。 –

答えて

1

Webメソッドはページのライフサイクルのコンテキスト外で実行されるため、コントロールはサーバー上に存在しません。 You cannot access them

しかし、このwebemethodはclientsideメソッドから呼び出しています。そこにテキストを割り当てることができます。だから、WebMethod属性にデータベースから値を取得し、それを返す:

[WebMethod] 
public static string GetCnorGSTNo(string Param1) 
{ 
    DataAccess clsObjDataAccess = new DataAccess(); 
    string qrySelCnorGtinNo = "select TinNo1 from CnorMaster where CnorName = '" + Param1 + "'"; 
    return clsObjDataAccess.GetDataTable(qrySelCnorGtinNo).AsEnumerable() 
     .ElementAtOrDefault(0)?.Field<string>("TinNo1"); 
} 

このWebメソッドを呼び出すJavaScriptの方法はtxtbx_cnortin.Valueに返されるテキストを割り当てます。

卿、このパラメータ化されたクエリのデモを教えてください。私はあなたが(string)valを変更する必要があります - カラムTinNo1のDB型を知らないので、私はsqlserver2005

[WebMethod] 
public static string GetCnorGSTNo(string cnorName) 
{ 
    using (var con = new SqlConnection("connection-string here")) 
    using (var cmd = new SqlCommand("select TinNo1 from CnorMaster where CnorName = @CnorName", con)) 
    { 
     cmd.Parameters.Add("@CnorName", SqlDbType.NVarChar).Value = cnorName; 
     con.Open(); 
     object val = cmd.ExecuteScalar(); 
     return val == DBNull.Value ? "" : (string)val; 
    } 
} 

確か

を使用しています。

+0

ありがとう... :) – karan

+0

@karan:文字列連結の代わりにパラメータ化されたクエリを使用する必要があることに注意してください。そうしないと、SQLインジェクション攻撃が(非常に)発生しやすくなります。 –

+0

先生、このパラメータ化されたクエリのデモを教えてください。 – karan