#c# #asp.net #drop-down-menu #textbox
#c# #asp.net #выпадающее меню #текстовое поле
Вопрос:
Я хотел бы знать, как я могу отобразить фиксированные данные на основе каскадного выпадающего списка, выбранного пользователем? Например, у меня есть 3 выпадающих списка, в последнем выпадающем списке, если пользователь выберет «Да», в текстовом поле будет отображаться «Позиция утверждена», а если пользователь выберет «Нет», в текстовом поле будет отображаться «Позиция не утверждена». Это мой код. Я не знаю, что еще можно, пожалуйста, помогите.
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
FillPackage();
}
}
private void FillPackage()
{
string strConn = ConfigurationManager.ConnectionStrings["dbconnection"].ConnectionString;
SqlConnection con = new SqlConnection(strConn);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT TopID, ToPackage FROM TableTop1";
DataSet objDs = new DataSet();
SqlDataAdapter dAdapter = new SqlDataAdapter();
dAdapter.SelectCommand = cmd;
con.Open();
dAdapter.Fill(objDs);
con.Close();
if (objDs.Tables[0].Rows.Count > 0)
{
ddl1.DataSource = objDs.Tables[0];
ddl1.DataTextField = "ToPackage";
ddl1.DataValueField = "TopID";
ddl1.DataBind();
ddl1.Items.Insert(0, "--Select--");
}
else
{
lblMsg.Text = "No Package found";
}
}
private void FillPurpose(int TopID)
{
string strConn = ConfigurationManager.ConnectionStrings["dbconnection"].ConnectionString;
SqlConnection con = new SqlConnection(strConn);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT PurposeID, Purpose FROM TablePurpose1 WHERE TopID =@TopID";
cmd.Parameters.AddWithValue("@TopID", TopID);
DataSet objDs = new DataSet();
SqlDataAdapter dAdapter = new SqlDataAdapter();
dAdapter.SelectCommand = cmd;
con.Open();
dAdapter.Fill(objDs);
con.Close();
if (objDs.Tables[0].Rows.Count > 0)
{
ddl2.DataSource = objDs.Tables[0];
ddl2.DataTextField = "Purpose";
ddl2.DataValueField = "PurposeID";
ddl2.DataBind();
ddl2.Items.Insert(0, "--Select--");
}
else
{
lblMsg.Text = "Please consult with focal person";
}
}
private void FillReason(int PurposeID)
{
string strConn = ConfigurationManager.ConnectionStrings["dbconnection"].ConnectionString;
SqlConnection con = new SqlConnection(strConn);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT ReasonID, Reason FROM TableReason1 WHERE PurposeID =@PurposeID";
cmd.Parameters.AddWithValue("@PurposeID", PurposeID);
DataSet objDs = new DataSet();
SqlDataAdapter dAdapter = new SqlDataAdapter();
dAdapter.SelectCommand = cmd;
con.Open();
dAdapter.Fill(objDs);
con.Close();
if (objDs.Tables[0].Rows.Count > 0)
{
ddl3.DataSource = objDs.Tables[0];
ddl3.DataTextField = "Reason";
ddl3.DataValueField = "ReasonID";
ddl3.DataBind();
ddl3.Items.Insert(0, "--Select--");
}
else
{
lblMsg.Text = "Please consult with focal person";
}
}
Ответ №1:
Поскольку у вас есть Page_Load
метод в вашем фрагменте, я рассмотрю, используете ли вы asp.net веб-формы. Если это так, вам просто нужно обработать событие, генерируемое компонентом DropDownList при его изменении.
Я ваш код на c #, вы должны создать метод для обработки события выбора элемента в вашем выпадающем списке, что-то вроде этого:
protected void ItemSelected(object sender, EventArgs e)
{
if (ddl3.SelectedItem.Value == "Yes")
{
// Change text box text
}
}
И тогда вам просто нужно подключить ваш обработчик событий к компоненту:
<asp:DropDownList ID="ddl3" runat="server" AutoPostBack="True"
onselectedindexchanged="ItemSelected">
</asp:DropDownList>
Комментарии:
1. большое вам спасибо, но я попробовал, и это не сработало. должен ли я использовать PurposeID вместо «Yes»?? я не знаю, как это выразить, но я хочу, чтобы в текстовом поле отображался «Текст», когда пользователь выбирает Purpose id 1 и наоборот
2. Значением будет выбранное значение из вашего выпадающего списка, вы можете поставить точку останова в этой строке и проверить, какое значение вводится, я поставил «Да» в примере, основанном на вашем вопросе.