在我的user.aspx页面中的任何特定用户帐户显示所有其他用户名/图像作为数据列表中的链接以及登录的特定用户信息。现在我希望如果我点击任何其他用户链接用户信息应该出现在同一个user.aspx页面上。我在页面加载
上使用此代码 Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
If Session("UserName") Is Nothing Then
Response.Redirect("login.aspx")
Else
If Not (IsPostBack) Then
binddata()
binddata1()
binddata2()
End If
End If
End Sub
Sub binddata()
Dim mycommand As New SqlCommand("SELECT * FROM details where id = @id", con)
mycommand.Parameters.Add("@id", SqlDbType.Int)
mycommand.Parameters("@id").Value = Convert.ToInt32(Request.QueryString("id"))
con.Open()
Data.DataSource = mycommand.ExecuteReader
Data.DataBind()
con.Close()
End Sub
Sub binddata1()
Dim mycommand As New SqlCommand("SELECT * FROM details where id = @id", con)
mycommand.Parameters.Add("@id", SqlDbType.Int)
mycommand.Parameters("@id").Value = Convert.ToInt32(Request.QueryString("id"))
con.Open()
nameimage.DataSource = mycommand.ExecuteReader
nameimage.DataBind()
con.Close()
End Sub
Sub binddata2()
Dim mycommand As New SqlCommand("SELECT * FROM details ", con)
con.Open()
user.DataSource = mycommand.ExecuteReader
user.DataBind()
con.Close()
End Sub
和datalist的这个脚本
<asp:DataList ID="custom" runat="server" DataKeyField="Name" RepeatColumns="1" >
<ItemTemplate>
<div><table>
<tr><asp:ImageButton ID="ImageButton1" runat="server" ImageUrl='<%# GetImageURL(Eval("Pic")) %>' PostBackUrl='<%# Eval("id", "user.aspx?id={0}") %>'/></tr>
<tr><td align="left" valign="top" style="width:90px"><asp:LinkButton ID="name" runat="server" ForeColor="Blue" Text='<%#Container.DataItem("Name")%>'></asp:LinkButton></td></tr>
</table></div></ItemTemplate>
</asp:DataList>
此代码在首次检查/点击时工作正常。当我点击其中一个用户时,它会加载用户的详细信息。但在此之后,当我点击另一个用户时,它不会加载该用户的详细信息。我想显示:用户登录,然后在他的页面上有其他用户的图像列表。当我点击其中任何一个时,特定的细节应该加载到适当的位置。帮帮我这个
答案 0 :(得分:0)
在执行数据绑定之前,您正在检查第一页加载。删除此检查或检查在其之前触发回发的控件名称。
答案 1 :(得分:0)
Yuriy的答案应该有效,但另一种方法是使用CommandArgument而不是PostBackUrl。您需要为DataList ItemCommand设置事件处理程序。 CommandArgument值将是您的ID值。您的事件处理程序将获取该ID并将其绑定到您的数据显示。