在ASP.Net C中传递SQL数据源中的JavaScript变量#

时间:2012-02-13 16:35:03

标签: c# javascript asp.net data-binding

我有一个java脚本变量,我想将它用于我的sqldatasourse我该怎么做呢。这是我的java脚本代码

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

我想在select命令

中使用变长
<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>

3 个答案:

答案 0 :(得分:0)

您需要使用AJAX将JS变量发送到服务器。假设您的ASP页面被称为query.asp,您可以使用jQuery执行以下操作。

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

现在,您的ASP页面可以像Request.QueryString('length')

那样访问它

答案 1 :(得分:0)

根据您尝试执行此操作的方式,最简单的解决方案是上述一些建议的组合。

  1. 在页面中创建服务器端ASP.NET隐藏字段控件。
  2. 服务器端隐藏字段控件设置为JavaScript变量值。
  3. 在访问数据库之前触发的_Selecting事件中,将“Parameter”值设置为隐藏服务器端控件的值。
  4. 第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;
    }
    

答案 2 :(得分:-1)

你可以创建一个隐藏元素并将js中的值插入其中,然后从c#中读取它并将其插入到数据库中。

html

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

js

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