我目前正在开设第一个网站。我遇到的问题如下:我创建了一个标题为“CustomerList”的分页,显然是从sql server DB列出客户。我已经使记录可以点击而不使用GridView中包含的选择按钮。当我点击一条记录时,它会将我带到我想要的页面。但是,我似乎无法找到从该click事件写入sql查询到我想要的页面的方法。以下是我点击事件的代码:
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
GridViewRow row = GridView1.SelectedRow;
if (row.RowIndex == 0)
{
Response.Redirect("UsageHistoryPage.aspx? EntityID="
+ row.Cells[0].Text);
}
}
如您所见,当我点击索引时,我会转到“UsageHistoryPage”。我还添加了row.cells。[0]获取该数据并将其写入UsageHistoryPage,在我的例子中,它将是页面顶部的客户名称。有人可以帮我这个吗?有没有人有一个很好的教程链接?谢谢。
答案 0 :(得分:1)
您可以尝试使用此代码 - 在UsageHistoryPage
var input = Response.QueryString["EntityId"];
var connectionString = "...";
var queryString = "SELECT Name FROM TABLE WHERE COLUMN=@EntityId";
using (SqlConnection connection = new SqlConnection(
connectionString))
{
connection.Open();
using(var command = new SqlCommand(queryString, connection))
{
Command.Parameters.AddWithValue("@EntityId",input)
SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection);
while (reader.Read())
{
Response.Write(String.Format("For Rick Your Name is here{0}", reader[0]));
}
}
}
答案 1 :(得分:1)
@Rick你可能想看一下如何检查一行是否被选中,例如你不需要for循环但在我的例子中需要检查RowIndex是否= 1或者> 0不= = 0
private void myButton_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow row in usersGrid.Rows)
{
if (this.usersGrid.SelectedRows.Count == 1)
{
// get information of 1st column from the row
string selectedUser = this.usersGrid.SelectedRows[0].Cells[0].ToString();
}
}
}
您需要做的就是确保选择了行
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
DataGridViewRow row = GridView1.SelectedRow;
if (this.row.SelectedRows.Count == 1)
{
Response.Redirect("UsageHistoryPage.aspx?EntityID=" + row.SelectedRows[0].Cells[0].ToString());
}
}
如果您希望显示客户名称,请在UsageHistorPage.aspx的Page Load上添加此代码
String strCustName = Request.QueryString["EntityID1"];
this.Page.Title = strCustName;
尝试这样的事情......如果有任何想法适合你,请告诉别人。