Самым простым решением, основанным на том, как вы пытаетесь это сделать, является комбинация некоторых из вышеупомянутых предложений.
- Создайте на своей странице скрытый элемент управления ASP.NET на стороне сервера.
- Установите для элемента управления скрытого поля на стороне сервера значение переменной JavaScript.
- В событии _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;
}