Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
asp.net javascript对象引用未设置为对象的实例_Javascript_Asp.net_Ajax - Fatal编程技术网

asp.net javascript对象引用未设置为对象的实例

asp.net javascript对象引用未设置为对象的实例,javascript,asp.net,ajax,Javascript,Asp.net,Ajax,我的英语说得不是很好。告诉问题。net页面,从数据库获取数据的javascript代码。我将它们添加到下拉列表中。当我运行此命令时,我想在按下按钮时从选定的DropDownList选择中检索数据。asp.net,但我认为它作为DropDownList的一部分是空的。我能做什么。等待帮助。谢谢 代码 aspx.cs---------------- <script language="javascript" type="text/javascript"> function Ge

我的英语说得不是很好。告诉问题。net页面,从数据库获取数据的javascript代码。我将它们添加到下拉列表中。当我运行此命令时,我想在按下按钮时从选定的DropDownList选择中检索数据。asp.net,但我认为它作为DropDownList的一部分是空的。我能做什么。等待帮助。谢谢

代码

aspx.cs----------------

<script language="javascript" type="text/javascript">

    function GetDataCity() {
        var response;
        Ajax_CSharp.GetDataCity(GetData_CallBackCity);
    }

    function GetData_CallBackCity(response) {
        var response = response.value;

        if (response == "Empty") {
            alert("no record");
        }
        else if (response == 'Error') {
            alert("database not connection");
        }
        else {
            var arr = response.split("~");
            var cityID = arr[0].split(",");
            var cityName = arr[1].split(",");

            document.getElementById('ddlistCity').length = 0;
            var o = document.createElement("option");
            o.value = "select";
            o.text = "select";
            document.getElementById('ddlistCity').add(o);
            for (var i = 0; i < cityID.length; i++) {
                var o = document.createElement("option");
                o.value = cityID[i];
                o.text = cityName[i];
                document.getElementById('ddlistCity').add(o);
            }
        }
    }




    </script>
</head>
<body onload="GetDataCity();">
    <form id="form1" runat="server"  >
    <div>
        <asp:DropDownList ID="ddlistCity" runat="server" >
        </asp:DropDownList>
        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
            ControlToValidate="ddlistCity" ErrorMessage="no select.." 
            InitialValue="seciniz" SetFocusOnError="True" ValidationGroup="genel">*</asp:RequiredFieldValidator>
        <br />
        <br />
        <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" ValidationGroup="genel"/>
    </div>
    </form>
</body>
使用Ajax;
公共部分类Ajax\u CSharp:System.Web.UI.Page
{
受保护的无效页面加载(对象发送方、事件参数e)
{
RegisterTypeForAjax(typeof(Ajax_CSharp));
}
[Ajax.AjaxMethod(HttpSessionStateRequirement.ReadWrite)]
公共字符串GetDataCity()
{
尝试
{
SqlConnection con=新的SqlConnection(ConfigurationManager.AppSettings[“conn”]);
SqlCommand cmd=新的SqlCommand(“从Sehir中选择*”,con);
cmd.Connection.Open();
SqlDataAdapter=新的SqlDataAdapter(cmd);
数据集ds=新数据集(“数据集”);
适配器。填充(ds,“表格”);
如果((ds.Tables[0].Rows.Count更改此项:

protected void Button1_Click(object sender, EventArgs e)
{
     string c;
     c = ddlistCity.SelectedItem.Value; **(error here. DropDownList is null.)**
 }
致:

以防止错误

但是,错误在于,在客户端上创建值时,这些值不会持久化回服务器。这意味着您必须将下拉列表中选定的值存储在隐藏字段中,以便在服务器上进行处理。您还必须在每次页面加载时绑定下拉列表,因为服务器也不会持久化它在客户端上创建的ems


HTH.

正如Brian提到的,使用
SelectedItem
需要一些逻辑来验证项目是否为空。您可能更容易使用
SelectedValue

string selectedValue = DropDownList1.SelectedValue;

ddlistCity是否在UpdatePanel中?但我想接收数据。这不可能吗?是的。您必须将所选项目复制到一个隐藏字段中。但是,您永远无法使用SelectedValue属性访问该值。原因是您在客户端上执行所有操作。当您做出该承诺时,世界会发生很大变化大多数控件执行此操作的主要方式(ASP.NET AJAX和第三方)将数据持久化回服务器就是将值放在一个隐藏字段中。使用服务器端的隐藏字段,该值将发布回服务器。谢谢。隐藏字段控件当您正确使用它时。查看html标记,但似乎是。静态字符串?隐藏字段?是性能。并且购买了数据。当页面发回时,下拉列表列表被重置。为什么?@Okan DropDownList不会持久化您通过javascript添加的值,这正是您正在做的。它永远不会持久化。您必须在客户端的每个页面加载上绑定到web服务。这只是Microsoft开发控件的方式(该控件是在他们推出ASP.NET AJAX框架之前开发的)。您可以看到此处的控件是否更适合您的需要:null,但DropDownList。我添加的数据在javasript中不存在。您想在JavaScript中获取
SelectedValue
?SelectedValue实际获取单击事件。然后打印另一个数据库的值。嗯?这没有任何意义。
SelectedValue
是一个返回字符串的属性…不要获取所选DropDownList id的值
protected void Button1_Click(object sender, EventArgs e)
{
     string c;
     if (ddllistCity.SelectedItem != null)
        c = ddlistCity.SelectedItem.Value; **(error here. DropDownList is null.)**
 }
string selectedValue = DropDownList1.SelectedValue;