如何使用asp.net中另一个相同的表单字段动态加载表单字段?

时间:2012-08-16 13:11:25

标签: c# asp.net ajax jquery

我正在开发一个ASP.net应用程序,我需要从以下代码中选择aspx文件中的值:

<td align="right"> Signal </td>
    <td> <select id = "signal" name = "signal">
    <%
        SqlDataReader Dr = Signal(); 
        while (Dr.Read())
        {
            Response.Write("<option> " + Dr["SignalID"].ToString() + " </option>");
        }
        Dr.Close();
    %>
        </select>
    </td>

    <td align = "right"> Data </td>
    <td> <input type="textarea" id = "data"/> Data need on the basis of above selected data </td>

Signal()方法返回某些数据的位置。例如,它返回:

2005, 2006, 2007

以上数据的原始代码是:

<select>
 <option value="2005">Volvo</option>
 <option value="2006">Saab</option>
 <option value="2007">Mercedes</option>
</select>

但我遇到的问题是,我希望这个选定的变量返回到相同的aspx.cs文件而不提交表单。这样我就可以将数据显示在文本区域中。

例如:

用户打开some.aspx页面,然后页面上会出现一个表单。默认情况下,它会显示2005并根据该信息text area will加载。

当用户选择2006时,并根据动态加载的数据text area

我知道我们可以使用Ajax和Jquery,但我不能使用Jquery and Ajax

1 个答案:

答案 0 :(得分:2)

解决方案1:使用DynamicPopulate control中的Microsoft AJAX Toolkit - 非常容易实现

解决方案2:正如您所指出的那样使用jQuery AJAX API

任何一种解决方案都需要WebMethod

[System.Web.Services.WebMethod(BufferResponse=false)]
public string GetTextAreaData(int selectedIndex)
{
   //implementation code
}

解决方案1非常简单,我甚至不会发布一个例子。只需按照上面的链接,你应该全部设置。但我会这样说,阅读与ToolkitScriptManager相关的性能调整,比如将其设置为发布模式,组合脚本等。

第二种解决方案也很简单,但要求您自己解析结果(有点)。 jQuery与前几年相比已经走了很长一段路,而且不再那么糟糕了。

创建一个OnChange事件处理程序(JS方法)并将其附加到下拉列表中。在处理程序中,调用类似这样的东西:(注意,这是未经测试的代码,它可能不适用于简单的复制/粘贴,但你明白了。)

function GetTextAreaData() { 
    var data = this.selectedIndex; // or whatever you want to send to the server
    var options = { 
        type: "POST", 
        url: "Default.aspx/GetTextAreaData", 
        data: "{selectedIndex:" + data + "}", 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        success: function(msg) { 
            $('#textAreaId').val(msg);
        } 
    }; 
    $.ajax(options); 
}