我正在尝试创建一个“选择用户”页面,该页面将动态地从数据库中提取用户数据,然后为在数据库中找到的每个用户生成一个链接以供选择。单击链接后,它将调用C#函数来创建cookie并重定向用户。
该代码正确地从数据库中拉出用户并生成链接,但是这些链接不起作用。这是生成链接的C#代码:
String sqlStatement = "SELECT * FROM TUsers";
SqlConnection conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
SqlCommand comm = new SqlCommand(sqlStatement, conn);
conn.Open();
SqlDataReader Reader = comm.ExecuteReader();
while (Reader.Read())
{
container.InnerHtml += "<a runat='server' href='#' onServerClick='UserButton_Click' > <div class='users'> <p>" + Reader["FirstName"] + " " + Reader["LastName"] + "</p> </div> </a>";
}
Reader.Close();
conn.Close();
这是生成的页面上的HTML源代码:
<div id="container"><a runat='server' href='#' onServerClick='UserButton_Click' > <div class='users'> <p>User 1</p> </div> </a>
单击链接时的后端C#代码与该问题无关。使用断点,从不开始调用应该被调用的函数。
我已经尝试过将HTML锚与onServerClick结合使用,到目前为止,该锚实际上并没有运行适当的功能,也没有尝试使用<asp:LinkButton>
项目,但是据我所知,由于是通过container.InnerHtml生成的,因此无法正确解析它们。
您可以使用ListView控件来获取所需的内容:
<asp:ListView ID="lvUsers" runat="server">
<ItemTemplate>
<div>
<asp:LinkButton ID="lnkUser" runat="server" OnClick="lnkUser_Click" Text='<%# Eval("FirstName") + " " + Eval("LastName") %>' />
</div>
</ItemTemplate>
</asp:ListView>
ListView的数据源可以这样设置:
using (SqlConnection conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
using (SqlCommand comm = new SqlCommand("SELECT * FROM TUsers", conn))
{
SqlDataAdapter dataAdapter = new SqlDataAdapter(comm);
DataSet ds = new DataSet();
dataAdapter.Fill(ds, "Users");
lvUsers.DataSource = ds.Tables[0];
lvUsers.DataBind();
}
事件处理程序将类似于您已经拥有的内容:
protected void lnkUser_Click(object sender, EventArgs e)
{
// Process user data and redirect
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句