2012-02-13 57 views
-1

我有一個Java腳本變量,我想用它爲我的sqldatasourse我怎麼能做到這一點。這裏是我的Java腳本代碼在ASP.Net C#傳遞一個JavaScript變量在SQL數據源

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。你的問題沒有任何意義。 – 2012-02-13 16:36:20

+2

您希望某些客戶端變量影響服務器中的某些內容,您需要將其發送到那裏,Ajax請求是執行此操作的最佳方式。 – gdoron 2012-02-13 16:39:08

回答

0

根據你如何試圖做到這一點,最簡單的解決方案是上述的一些建議組合。

  1. 在頁面中創建一個服務器端ASP.NET隱藏字段控件。
  2. 設置服務器端隱藏字段控制到JavaScript變量值。
  3. 在現有的數據庫被訪問,其將觸發_Selecting事件中,「參數」值設置爲隱藏的服務器側控制的。

步驟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值到它,然後從閱讀c#並將其插入數據庫。

的HTML

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

的JS

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

?! div而不是隱藏?如何將元素連接到服務器最重要的是缺少。 – gdoron 2012-02-13 16:41:05

+1

只有輸入字段被髮布到服務器。 – Magnus 2012-02-13 20:41:59

+0

隱藏的div不正確。我將它更新爲「輸入」。從那裏他實際上將通過AJAX將其提交給控制器。 – 2012-02-13 20:42:31

0

你需要使用AJAX的JS變量發送到服務器。假設您的ASP頁面被稱爲query.asp,您可以使用jQuery執行以下操作。現在

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

你的ASP頁面可以訪問它像Request.QueryString('length')