如何解决如何将此示例aspx代码移动到aspx.cs以实现后面的代码?
| 我有一个下拉列表,其中装有来自SQL数据库的数据。这可能是我在aspx文件中所拥有的。我如何(尽可能)将代码从aspx文件移动到aspx.cs文件,以实现技术背后的代码? 我的意思是至少是SELECT部分。 谢谢。<asp:DropDownList ID=\"DropDownList1\" ... runat=\"server\"/>
...
<asp:SqlDataSource ID=\"SqlDataSource1\" runat=\"server\"
ConnectionString=\"<%$ ConnectionStrings:Pubs %>\"
SelectCommand=\"SELECT [au_id],[au_lname],[au_fname],[state] FROM [authors] WHERE [state] = @state\">
<SelectParameters>
<asp:ControlParameter Name=\"state\" ControlID=\"DropDownList1\" PropertyName=\"SelectedValue\" />
</SelectParameters>
</asp:SqlDataSource>
解决方法
假设您正在将网格与数据源ѭ1binding绑定,那么您可以在代码隐藏中捕获
SelectedIndexChanged
事件,并获取数据来绑定网格,如下所示:
ASPX文件:
<asp:DropDownList ID=\"DropDownList1\" runat=\"server\"
OnSelectedIndexChanged=\"ddlChanged\" />
C#(代码隐藏):
protected void ddlChanged(object sender,EventArgs e)
{
var cs=..;//get connection string
using(var con=new SqlConnection(cs))
{
using(var com=new SqlCommand(con))
{
com.Open();
com.CommandType = CommandType.Text;
com.CommandText=\"SELECT [au_id],[au_lname],[au_fname],[state]
FROM [authors] WHERE [state] = @state\";
var state=....;//GET VALUE OF STATE FROM DROPDOWN
var p = com.Parameters.Add(\"@state\");//set other properties
p.Value = state;
using(var adptr=new SqlDataAdapter(com))
{
var dtb=new DataTable();
adptr.Fill(dtb);
grid.DataSource=dtb;
grid.DataBind();
}
}
}
}
, ѭ5是您正在使用的数据源对象的属性。这些可以根据需要在后面的代码中应用,但是您可能希望在重写的Init页面函数中进行操作,因为这可能会在asp.net页面生命周期的早期使用。例如,尽管我不确定确切的位置。
protected override OnInit(object sender,EventArgs e)
{
dsMySource.SelectCommand = \"SELECT [au_id],[state] FROM [authors] WHERE [state] = @state\"
}
您还必须确保后面的代码也正确使用了@state参数,也可以将其作为属性(dsMySource.SelectParameters
)进行访问。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。