Windows: 7 Home Premium
Visual Studio: 2012
语言: C#
SQL: Server 2008
我将一些标签和一个Image绑定到DataReader,它从本地DataBase读取。 标题标签和图像的图像URL正确绑定,但只有在刷新页面后才会填充其余标签。
第一张图片显示我点击用户个人资料链接后的页面。请注意,页面中的3个标签的信息不正确:
刷新整页后,数据显示正确:
代码如下
private static string _acceptingChallenges = "0";
private static string _curUser;
private static string _website = "[None]";
private static string _dateJoined = DateTime.Now.ToString();
protected void Page_Load(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(Request.QueryString["user"]))
{
_curUser = (Request.QueryString["user"]);
pnlProfilePublic.Visible = true;
pnlProfilePrivate.Visible = false;
PopulatePublic();
}
else
{
if (!string.IsNullOrEmpty((string) Session["Nickname"]))
{
_curUser = Session["Nickname"].ToString();
pnlProfilePublic.Visible = false;
pnlProfilePrivate.Visible = true;
PopulatePrivate();
}
else
{
Response.Redirect("~/Default.aspx");
}
}
InitiateData();
}
private void InitiateData()
{
if (Master == null) return;
Label lblTitle = (Label)Master.FindControl("lblTitle");
const string strSql = "SELECT * FROM vwGetProfileDetails WHERE memberNickname=@member";
var sqlComm = new SqlCommand(strSql, DataConn.Connect()) { CommandType = CommandType.Text };
sqlComm.Parameters.Add(new SqlParameter("@member", SqlDbType.VarChar, 20)).Value = _curUser;
var rdr = sqlComm.ExecuteReader();
int count = 0;
while (rdr.Read())
{
imgProfile.ImageUrl = rdr["memberAvatarLocation"].ToString();
lblTitle.Text = _curUser + "'s Profile Page";
_acceptingChallenges = rdr["memberAcceptingChallenge"].ToString();
_website = rdr["memberWebsite"].ToString();
_dateJoined = rdr["dateAdded"].ToString();
count = count + 1;
}
rdr.Close();
DataConn.Disconnect();
Response.Write(count);
}
答案 0 :(得分:1)
_curUser第一次调用InitiateData
时是否有值?我不这么认为
此外,您不希望在网页上使用静态变量。
答案 1 :(得分:1)
在InitiateData之前调用PopulatePublic和PopulatePrivate ...因此它们将存储在静态字符串中,并且只在下次调用页面时才会填充。
如果您正在使用ASP.Net控件,则可能会启用自动查看状态,因此在回发时将重新填充控件。所以你可以做lblWebsite.Text = rdr [“memberWebsite”]。ToString();并让ASP.NET管理viewstate ..不需要静态字符串..