2012-02-13 1 views
-1

私はJavaスクリプト変数を持っています。私はsqldatasourseにこれをどのように使用したいのですか?ここに私のJavaスクリプトコードASP.NetのSQLデータソースにJavaScript変数を渡すC#

var div = document.getElementById('main_content').offsetHeight; 
      var length = Mah.round(div/400); 

であり、私からそれを読んで、その後

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:qbuyConnectionString1 %>" 
     SelectCommand="SELECT TOP variable * FROM [advertisement] WHERE ([enable] = @enable) ORDER BY NEWID()"> 
     <SelectParameters><asp:Parameter DefaultValue="1" Name="enable" Type="Int32" /></SelectParameters> 
</asp:SqlDataSource> 
+2

Javascriptがクライアント上で実行されます。サーバー上のSQL。あなたの質問は意味をなさない。 –

+2

あなたはクライアント側の変数があなたがそこにそれを送る必要があるサーバーの何かに影響を与えたい、AJAXの要求はそれを行うための最善の方法です。 – gdoron

答えて

0

のようにアクセスすることができます。

  1. ページにサーバー側ASP.NETの非表示フィールドコントロールを作成します。
  2. サーバー側の隠しフィールドコントロールをJavaScript変数の値に設定します。
  3. データベースにアクセスする前に発生する_Selectingイベントで、 'Parameter'値を隠しサーバー側コントロールの値に設定します。

ステップ1:

<!--Create an ASP.NET hidden field server control--> 
<asp:HiddenField ID="HiddenField1" runat="server" /> 

ステップ2:

//JavaScript you were using populating the 'length' variable: 
var div = document.getElementById('main_content').offsetHeight; 
var length = Mah.round(div/400); 
//Now set the hidden field's value to your JS variable value: 
document.getElementById('<%= HiddenField1.ClientId %>'); 

ステップ3:

protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e) 
{ 
    //The 'Selecting' event fires *prior* to the wired up Select method being called. 
    //This is the spot to add in or modify any of the parameter values: 
    e.Command.Parameters["LengthParameter"].Value = this.HiddenField1.Value; 
} 
-1

だけでなく、あなたが隠し要素を作成し、その中にJSから値を挿入することができselectコマンドで、ここで可変長を使用したいですc#を実行してdbに挿入します。

HTML

<input type="hidden" id="dataForSQL"></input> 

あなたはAJAXを使用してサーバーにJS変数を送信する必要がJS

$('#dataForSQL').html(length); 
+0

?! divの代わりに隠された?最も重要なことは、要素をサーバーに接続する方法が欠落していることです。 – gdoron

+1

入力フィールドのみがサーバーに送信されます。 – Magnus

+0

hidden divが間違っていました。私はそれを 'input'に更新しました。そこから、彼は実際にAJAX経由でコントローラーに提出します。 –

0

。あなたのASPページがquery.aspであると仮定すると、jQueryを使って次のことができます。

$.get('query.asp', {length: length}); 

今すぐあなたのASPページでは、これを実行しようとしているかに基づいて、最も簡単な解決策は、前述の提案のいくつかの組み合わせであるRequest.QueryString('length')

関連する問題