Я пытаюсь взять GridView и вернуть данные из строки, по которой щелкнули. Я пробовал приведенный ниже код, и когда я щелкаю строку, я возвращаю выбранный индекс, но когда я смотрю на фактические строки в GridView, они отображаются пустыми. Не уверен, что мне не хватает.
.ASP сделать мою сетку.
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="True"
CssClass="datatables" Width="100%"
DataSourceID="SqlDataSource1"
GridLines="None" ShowFooter="True" AllowSorting="True"
onrowcreated="GridView1_RowCreated"
onrowdatabound="GridView1_RowDataBound" ShowHeaderWhenEmpty="True"
onrowcommand="GridView1_RowCommand"
onselectedindexchanged="GridView1_SelectedIndexChanged">
<HeaderStyle CssClass="hdrow" />
<RowStyle CssClass="datarow" />
<PagerStyle CssClass="cssPager" />
</asp:GridView>
В каждой привязке данных строки я удостоверяюсь, что щелчок должен установить выбранный индекс.
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes["onclick"] = Page.ClientScript.GetPostBackClientHyperlink(GridView1, "Select$" + e.Row.RowIndex);
}
}
Затем, когда выбранный индекс изменяется, щелкнув, это запускается, и я могу поставить точку останова в первой строке, и я вижу, что индекс того, что я щелкнул, сохраняется в a. Однако, когда я добираюсь до foreach, он пропускает его, потому что показывает, что GridView1 имеет Count 0 строк. Теоретически он должен иметь пару сотен строк, и когда индекс совпадает, он должен захватить данные в 6-й ячейке и сохранить их в строке b. Почему я не получаю строк по клику?
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
int a = GridView1.SelectedIndex
foreach (GridViewRow row in GridView1.Rows)
{
if (row.RowIndex == a)
{
b = row.Cells[6].Text;
}
}
}
Вот моя загрузка страницы.
protected void Page_Load(object sender, EventArgs e)
{
c = HttpContext.Current.Session["c"].ToString();
SqlDataSource1.ConnectionString = //My secret
string strSelect = "SELECT columnnames from tablenames where c in (@c)
SqlDataSource1.SelectParameters.Clear();
SqlDataSource1.SelectCommand = strSelect;
SqlDataSource1.SelectParameters.Add("c", c);
try
{
GridView1.DataBind();
}
catch (Exception e)
{
}
GridView1.AutoGenerateColumns = true;
}
AutoGenerateSelectButton
, заключается в том, что слово Select ставится рядом со всем. Я просто хотел просто щелкнуть по нему, он делает то, что ему нужно для ответа. К сожалению, для GridView нет события onClick. - person John Wesley Gordon   schedule 08.01.2014