<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:trainingConnectionString %>"> </asp:SqlDataSource>
<asp:GridView ID="Data" runat="server" onRowCreated="Data_RowCreate" onSelectedIndexChanging="Data_SelectedIndexChanging" onSelectedIndexChanged="Data_SelectedIndexChanged"
CellPadding="4" DataSourceID="SqlDataSource1" ForeColor="#333333"
GridLines="None" AutoGenerateColumns="False">
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<Columns>
<asp:BoundField DataField="id" ReadOnly="True" SortExpression="id" />
<asp:TemplateField HeaderText="Название вопроса">
<ItemTemplate>
<asp:HyperLink Target="_popup" ID="quest" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowSelectButton="True" ButtonType="Link" SelectText="Добавить" />
</Columns>
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#999999" />
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
</asp:GridView>
Выделение Строки в GridView
Я сделал это так:
основная страница:
Код:
кодовая страница:
Код:
protected void Page_Load(object sender, EventArgs e)
{
string type = (string)Session["ddl_text"];
switch (Convert.ToInt32(type))
{
case 1:
{
SqlDataSource1.SelectCommand = "SELECT id, name FROM question WHERE category=1";
break;
}
}
SIC = true;
}
protected void Data_RowCreate(object sender, GridViewRowEventArgs e)
{
if (SIC)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string quest_str = (string)DataBinder.Eval(e.Row.DataItem, "name");
int id_int = (int)DataBinder.Eval(e.Row.DataItem, "id");
HyperLink name = (HyperLink)e.Row.FindControl("quest");
name.Text = quest_str;
name.NavigateUrl = "~/course/about_quest.aspx?id=" + id_int;
}
}
}
bool SIC;
protected void Data_SelectedIndexChanging(object sender, EventArgs e)
{
SIC = false;
}
protected void Data_SelectedIndexChanged(object sender, EventArgs e)
{
string i = Data.SelectedDataKey.Value.ToString(); //*
Response.Write(i);
}
{
string type = (string)Session["ddl_text"];
switch (Convert.ToInt32(type))
{
case 1:
{
SqlDataSource1.SelectCommand = "SELECT id, name FROM question WHERE category=1";
break;
}
}
SIC = true;
}
protected void Data_RowCreate(object sender, GridViewRowEventArgs e)
{
if (SIC)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string quest_str = (string)DataBinder.Eval(e.Row.DataItem, "name");
int id_int = (int)DataBinder.Eval(e.Row.DataItem, "id");
HyperLink name = (HyperLink)e.Row.FindControl("quest");
name.Text = quest_str;
name.NavigateUrl = "~/course/about_quest.aspx?id=" + id_int;
}
}
}
bool SIC;
protected void Data_SelectedIndexChanging(object sender, EventArgs e)
{
SIC = false;
}
protected void Data_SelectedIndexChanged(object sender, EventArgs e)
{
string i = Data.SelectedDataKey.Value.ToString(); //*
Response.Write(i);
}
он выдает ошибку на строке отмеченной //* Data keys must be specified on GridView 'Data' before the selected data keys can be retrieved. Use the DataKeyNames property to specify data keys.
Перевод знаю ;), но что-то никаких догадок в чем может быть проблема.
Может кто-нить сможет помочь или сталкивался с таким?
Все нашел проблему, оказывается немного не по образу сделал в таблице не указал DataKeyNames.