Umair Nafis Ответов: 1

Dropdownlist onselectedindexchanged событие не работает


при загрузке страницы раскрывающийся список страны привязан и работает нормально, но после того, как я выберу страну, чем нет привязки состояния в раскрывающемся списке состояния.

Что я уже пробовал:

 ----------------------front end-----------------------------
<asp:DropDownList ID="ddlcountry" runat="server" OnSelectedIndexChanged="ddlcountry_SelectedIndexChanged" AutoPostBack="true" CssClass="form-control ddl"></asp:DropDownList>
 
<asp:DropDownList ID="ddlstate" runat="server" AutoPostBack="true" CssClass="form-control ddl"></asp:DropDownList> 
 
--------------------------------code behind------------------------------ 
 
protected void Page_Load(object sender, EventArgs e)
{
if (con.State == ConnectionState.Closed)
{
con.Open();
}
if (!Page.IsPostBack)
{
getcountry();
}
}
protected void getcountry()
{
try
{
da = new SqlDataAdapter("select * from get_country", con);
ds = new DataSet();
da.Fill(ds);
ddlcountry.DataSource = ds;
ddlcountry.DataTextField = "conname";
ddlcountry.DataValueField = "conid";
ddlcountry.DataBind();
ddlcountry.Items.Insert(0, new ListItem("--Select--", "0"));
ddlstate.Items.Insert(0, new ListItem("--Select--", "0"));
}
catch (Exception ex)
{
Response.Write("error occurd :" + ex.Message.ToString());
}
finally
{
con.Close();
}
}
protected void ddlcountry_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
int conid = Convert.ToInt32(ddlcountry.SelectedItem.Value.ToString());
da = new SqlDataAdapter("select stateid,statename from get_state where conid=" + conid, con);
ds = new DataSet();
da.Fill(ds);
ddlstate.DataSource = ds;
ddlstate.DataTextField = "statename";
ddlstate.DataValueField = "stateid";
ddlstate.DataBind();
ddlstate.Items.Insert(0, new ListItem("---Select State---", "0"));
if (ddlstate.SelectedValue == "0")
{
ddlcity.Items.Clear();
ddlcity.Items.Insert(0,new ListItem("---Select City---","0"));
}
}
catch(Exception ex)
{
Response.Write("error occurd :" + ex.Message.ToString());
}
finally
{
con.Close();
}
}

Umair Nafis

----------------с фоновым кодом--------------------

protected void Page_Load(отправитель объекта, EventArgs e)
{
if (con. State == ConnectionState.Закрытый)
{
кон.Открыть();
}
если (! страница.IsPostBack)
{
getcountry();
}
}
охраняемых недействительными getcountry()
{
пробовать
{
da = new SqlDataAdapter ("select * from get_country", con);
ds = новый набор данных();
да.Заполнить(ДС);
ddlcountry.Источник данных = ДС;
ddlcountry. DataTextField = " conname";
ddlcountry. DataValueField = " conid";
ddlcountry.Привязку();
ддлкантри.Предметы.Insert(0, new ListItem ("--Select--", " 0"));
ddlstate.Предметы.Insert(0, new ListItem ("--Select--", " 0"));
}
поймать (исключение бывший)
{
Ответ.Write ("error occurd:" + ex.Message.Метод toString());
}
наконец
{
кон.Рядом();
}
}
охраняемых недействительными ddlcountry_SelectedIndexChanged(объект отправителя, EventArgs в электронной)
{
пробовать
{
int conid = преобразовать.ToInt32(ddlcountry.Элемент.Ценность.Метод toString());
da = new SqlDataAdapter ("select stateid, statename from get_state where conid=" + conid, con);
ds = новый набор данных();
да.Заполнить(ДС);
ddlstate.Источник данных = ds;
ddlstate.DataTextField = " statename";
ddlstate.DataValueField = " stateid";
ddlstate.Привязку();
ddlstate.Предметы.Insert(0, new ListItem ("- - - Select State - - -", " 0"));
если (ddlstate.SelectedValue = = " 0")
{
ddlcity.Предметы.Четкий();
ddlcity.Предметы.Insert(0, new ListItem ("- - - Select City - - -", " 0"));
}
}
поймать(исключение бывший)
{
Ответ.Write ("error occurd:" + ex.Message.Метод toString());
}
наконец
{
кон.Рядом();
}
}

1 Ответов

Рейтинг:
0

Karthik_Mahalingam

на основе кода из комментариев

ddlstate.Items.Insert(0, new ListItem("---Select State---", "0")); // line 1
if (ddlstate.SelectedValue == "0")  // line 2
{
ddlcity.Items.Clear();  // line 3
ddlcity.Items.Insert(0,new ListItem("---Select City---","0"));
}


в строке 1 вы вставляете значение с 0-м индексом, которое будет выбрано по умолчанию
в строке 2 вы проверяете, что выбранное значение равно 0, конечно, оно будет только 0, оно будет проходить внутри условия
в строке 3 Он очистит все элементы в ddlcity
в конечном счете ваш ddlstate будет пустым,

Решение:
if (ddlCountry.SelectedValue == "0") // change state to country


Umair Nafis

все еще не работает

Karthik_Mahalingam

опубликуйте обновленный код здесь

Umair Nafis

я удалил весь код и начал с нуля...теперь я знаю, что проблема заключается в sql-запросе, который я пишу как :-

da = new SqlDataAdapter ("select stateid, statename from get_state where conid=" + conid, con);

есть ли у вас какие-либо представления об этом sytnax правильно или нет ?
я даже использую хранимый procesdure вместо прямого запроса bt результат все тот же он не принимает никакого значения из базы данных

Karthik_Mahalingam

да правильно

Umair Nafis

--------------это мой код после использования хранимой процедуры---------------
охраняемых недействительными ddlcountry_SelectedIndexChanged(объект отправителя, EventArgs в электронной)
{

cmd = new SqlCommand ("_pr_get_state", con);
УМК.CommandType=CommandType.Хранимая процедура;
da=новый SqlDataAdapter(cmd);
ds=новый набор данных();
да.Заполнить(ДС);
ddlstate.Источник данных=ds;
ddlstate.DataTextField= " statename";
ddlstate.DataValueField= " stateid";
ddlstate.Привязку();
ddlstate.Предметы.Insert(0, new ListItem ("- - - Select State - - -", " 0"));
ddlcity.Предметы.Insert(0, new ListItem ("- - - Select City - - -", " 0"));
если (ddlstate.SelectedValue = = " 0")
{

ddlcity.Предметы.Четкий();
ddlcity.Предметы.Insert(0, new ListItem ("- - - Select City - - -", " 0"));

}


}

---------а этот запрос в sql server-------------

Создать процедуру _pr_get_state
@conid int
АС
НАЧАТЬ
выберите stateid, statename из get_state, где conid=@conid
КОНЕЦ

Karthik_Mahalingam

измените эту строку
если (ddlstate.SelectedValue = = " 0")

так и должно быть
если (ddlcountry.SelectedValue = = " 0")

Umair Nafis

попробовать это... bt это также NT работает :(

Karthik_Mahalingam

обновил код, пожалуйста.

Umair Nafis

охраняемых недействительными ddlcountry_SelectedIndexChanged(объект отправителя, EventArgs в электронной)
{

cmd = new SqlCommand ("_pr_get_state", con);
УМК.CommandType=CommandType.Хранимая процедура;
da=новый SqlDataAdapter(cmd);
ds=новый набор данных();
да.Заполнить(ДС);
ddlstate.Источник данных=ds;
ddlstate.DataTextField= " statename";
ddlstate.DataValueField= " stateid";
ddlstate.Привязку();
ddlstate.Предметы.Insert(0, new ListItem ("- - - Select State - - -", " 0"));
ddlcity.Предметы.Insert(0, new ListItem ("- - - Select City - - -", " 0"));
если (ddlcountry.SelectedValue = = " 0")
{

ddlcity.Предметы.Четкий();
ddlcity.Предметы.Insert(0, new ListItem ("- - - Select City - - -", " 0"));

}


}

Karthik_Mahalingam

я надеюсь, что вы делаете каскадное падение вниз
если (ddlcountry.SelectedValue = = " 0")
{
ddlstate.Предметы.Четкий();
ddlstate.Предметы.Insert(0, new ListItem ("- - - Select state - - -", " 0"));


ddlcity.Предметы.Четкий();
ddlcity.Предметы.Insert(0, new ListItem ("- - - Select City - - -", " 0"));



}


убедитесь, что sp возвращает значения _pr_get_state
кроме того, вы должны передать значение страны, чтобы получить Штаты
вы упускаете много моментов.

Umair Nafis

так что же мне делать now...im застрял в этой проблеме с трех дней..

Karthik_Mahalingam

отлаживать его

Umair Nafis

я рад

Karthik_Mahalingam

ладно

Umair Nafis

.