我正在尝试将整个GridView行作为链接,我想我已经得到了它,但我遇到了一个问题。从下面可以看到,我的所有查询字符串数据都来自数据库,现在我想添加一个不是来自数据库的查询字符串,我怎么能实现这个?
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string Types = Request.QueryString["Type"].ToString();
string Rounds = Request.QueryString["Rounds"].ToString();
string Groups = Request.QueryString["Groups"].ToString();
string Id = DataBinder.Eval(e.Row.DataItem, "Id").ToString();
string League = DataBinder.Eval(e.Row.DataItem, "League").ToString();
string Team1 = DataBinder.Eval(e.Row.DataItem, "Team1").ToString();
string Team2 = DataBinder.Eval(e.Row.DataItem, "Team2").ToString();
string Type = DataBinder.Eval(e.Row.DataItem, "TType").ToString();
string Location = ResolveUrl("Update_Match.aspx" + "?Id=" + Id + "&Team1=" + Team1 + "&Team2=" + Team2 + "&League=" + League + "&Type=" + Type + "&Types=" + Types + "&Rounds=" + Rounds + "&Groups=" + Groups);
e.Row.Attributes["onClick"] = string.Format("javascript:window.location='{0}';", Location);
e.Row.Style["cursor"] = "pointer";
}
}
答案 0 :(得分:0)
我重写了一下,试图更好地理解你的问题。它比你想要的更冗长,但它会让它更清晰。您需要做的就是从许多元素构建一个查询字符串,其中一些元素来自您的数据库,一些来自您之前的页面,其他元素可能是硬编码的。这一切都很简单。只需先在查询字符串中为每个变量赋值,然后再构建字符串。
例如,假设您使用以下ID从数据库中获取团队名称:
String Team1 = db.Teams.Where(w => w.TeamID = TeamID).First().TeamName;
并且您将Type设置为硬编码值:
Int type = 0;
完成构建变量后,只需将它们组合在一起:
string QS = "Id=" + ID.ToString();
QS = QS + "&Team1=" + Team1;
QS = QS + "&Team2=" + Team2;
QS = QS + "&League=" + League;
QS = QS + "&Type=" + Type.ToString();
QS = QS + "&Types=" + Types;
QS = QS + "&Rounds=" + Rounds.ToString();
QS = QS + "&Groups=" & Groups.ToString();
e.Row.Cells[0].Visible = false;e.Row.Attributes.Add("onclick", "location='newpage.aspx?" + sQueryString;
e.Row.Attributes.Add("style", "cursor:pointer;");
只要将每个值转换为字符串以构建查询字符串,您获取每个值都无关紧要。还有什么我想念的吗?
答案 1 :(得分:-1)
看起来你的代码应该可行。尝试加载页面时是否出现任何脚本错误?
另外,你用什么浏览器测试?
我会尝试在onClick小写字母中创建“c”以开始。
除此之外,我会考虑稍微修改一下你的代码,因为看起来你很容易受到跨站点脚本攻击的攻击,因为在将它放入属性之前你没有清理QueryString。
攻击者可以通过修改页面的queryString来说明:
http://www.yourpage.com/index.aspx?otherQueryString=3&Groups=<script>window.alert("Hello XSS!!");</script>