如何解决网格视图未显示结果
| 我想在运行时选择DataSource
并在用户从DropDownList
中选择一个选项时绑定GridView
。但是所选表或连接未正确建立。
请检查以下代码,并提供适当的解决方案。
public partial class index : System.Web.UI.Page
{
SqlConnection conn = new SqlConnection();
string option = \"\";
protected void Page_Load(object sender,EventArgs e)
{
option = selectProductdropdown.SelectedValue;
}
protected void Button1_Click(object sender,EventArgs e)
{
Label2.Text = option;
if (option == \"Books\")
{
Label3.Text = option;
conn.ConnectionString = ConfigurationManager.ConnectionStrings[\"booksconnectionstring\"].ConnectionString;
conn.Open();
SqlCommand cmd = new SqlCommand(\"SELECT * from books\",conn);
cmd.CommandType = CommandType.Text;
SqlDataAdapter reader = new SqlDataAdapter(cmd);
DataSet s = new DataSet();
reader.Fill(s);
GridView1.DataSource = s;
GridView1.DataBind();
conn.Close();
}
解决方法
问题出在page_load事件中,您在其中为选项分配值。当您单击按钮时,page_load将再次调用,并且您的值将重置。
它应该是...
protected void Page_Load(object sender,EventArgs e)
{
if(!Page.IsPostBack)
option = selectProductdropdown.SelectedValue;
}
否则,如果您愿意的话会更好。
if (selectProductdropdown.SelectedValue == \"Books\")
,因为您可能在每次加载页面时都选择了清空选项。
,避免使用公共变量字符串选项= \“ \”;
而是在Click事件中定义相同的内容并在那里获取选定的值
option = selectProductdropdown.SelectedValue;// move to click event
因为当单击按钮时,下拉菜单将被重置(假设您未在此处显示下拉菜单绑定代码)
,protected void Page_Load(object sender,EventArgs e)
{
if (!Page.IsPostBack)
option = selectProductdropdown.SelectedValue;
}
,您已省略此行:
cmd.ExecuteReader();
将其放在语句之间,如下所示:
SqlCommand cmd = new SqlCommand(\"SELECT * from books\",conn);
cmd.ExecuteReader(); // <-- HERE
cmd.CommandType = CommandType.Text;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。