我真的不知道怎么说这个...我有一个查询数据库的下拉列表,并显示基于id的描述列表。我希望用户能够选择描述,按下按钮并调用我的getQueryResults()函数,并传递id而不是描述。由于类型冲突,getQueryResults(DropDownList1.SelectedValue)不起作用。我还能用什么呢?
protected void Page_Load(object sender, EventArgs e)
{
DataConnector dc = new DataConnector();
DropDownList1.DataSource = dc.getCodeTypes();
DropDownList1.DataValueField = "id";
DropDownList1.DataTextField = "description";
DropDownList1.DataBind();
}
protected void Button1_Click(object sender, EventArgs e)
{
DataConnector dc = new DataConnector();
GridView2.DataSource = dc.getQueryResults(DropDownList1.SelectedValue); //error: cannot convert from string to int
GridView2.DataBind();
}
public List<CodeDesc> getQueryResults(int searchTerm)
{
try
{
string query = "select id, code, descr from code_desc where code_type_id = :searchTerm";
//more stuff
我的经理不希望我更改查询字符串。 (之前我曾使用&#34;从code_desc中选择id,code,descr,其中code_type_id =(从code_desc中选择id,其中descr =:searchTerm);&#34;其中searchTerm是字符串描述,因此不需要id)
答案 0 :(得分:1)
首先将DropDownList DataBinding包装在IsPostBack
项检查中。
if (!Page.IsPostBack)
{
DropDownList1.DataSource = dc.getCodeTypes();
DropDownList1.DataValueField = "id";
DropDownList1.DataTextField = "description";
DropDownList1.DataBind();
}
我不这样做,每次加载页面时,数据都会再次被绑定,DropDownList会回到它的第一个值。
然后,您可以通过将值转换为getQueryResults
来使用SelectedValue
调用int
。
GridView2.DataSource = dc.getQueryResults(Convert.ToInt32(DropDownList1.SelectedValue));
最后,谷歌parameratized queries。
答案 1 :(得分:0)
DropDownList类的SelectedValue属性是一个字符串
[BindableAttribute(true, BindingDirection.TwoWay)]
[BrowsableAttribute(false)]
[ThemeableAttribute(false)]
public virtual string SelectedValue { get; set; }
这就是为什么你得到这个转换错误,你需要将字符串解析成一个int,或者甚至更好地传递字符串值。
答案 2 :(得分:0)
您可以使用它传入一个int。
int parameter = Convert.ToInt32(DropDownList1.SelectedValue);
答案 3 :(得分:0)
public class ComboboxItem
{
public string Text { get; set; }
public object Value { get; set; }
public override string ToString()
{
return Text;
}
}
protected void Page_Load(object sender, EventArgs e)
{
DataConnector dc = new DataConnector();
DropDownList1.DataSource = dc.getCodeTypes();
ComboboxItem item = new ComboboxItem();
item.Text = "id"
item.Value = "description";
DropDownList1.Items.Add(item);
}