Я пытаюсь взять GridView и вернуть данные из строки, которая была нажата. Я пробовал код ниже, и когда я нажимаю на строку, я возвращаю выбранный индекс, но когда я смотрю на фактические строки в 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);
}
}
Затем, когда выбранные изменения индекса, нажав на эту увольняют, который я могу поставить точку останова на первой линии, и я вижу, что индекс я нажал на откладываются в. Однако, когда я добираюсь до foreach, он проскакивает прямо мимо него, потому что он показывает GridView1, имеющую граф из 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. –
Да, извините. Я удалил свой комментарий, потому что я понял, от чтения вашего кода, что вы хотели иметь событие click во всей строке =) – jadarnel27