прежде чем я попросил об этом, я проверил некоторые проверки, чтобы убедиться, что это не дубликат и способы получить значения строк из строки, которая имеет флажок в поле шаблона... но я не могу показаться чтобы заставить его работать... До сих пор я пробовал
protected void Page_Load(object sender, EventArgs e)
{
Entities NW = new Entities();
var customers =
from c in NW.Customers
where (c.ContactName.StartsWith("Ma") || c.ContactName.StartsWith("An")
|| c.ContactName.StartsWith("T")
|| c.ContactName.StartsWith("V")
)
orderby c.ContactName ascending
select new
{
c.CustomerID,
c.ContactName,
c.CompanyName,
c.City
};
gv1.DataSource = customers.ToList();
gv1.DataBind();
}
protected void Button1_Click(object sender, EventArgs e)
{
foreach (GridViewRow row in gv1.Rows)
{
if (row.RowType == DataControlRowType.DataRow)
{
CheckBox chkRow = (row.Cells[0].FindControl("CB") as CheckBox);
if (chkRow.Checked)
{
Label1.Text = row.Cells[2].Text;
}
}
}
}
Я прошел через событие нажатия кнопки, и когда он добирается до
if (chkRow.Checked)
его показ как null и проскакивает над ним.
моя разметка
<asp:GridView ID="gv1" runat="server">
<HeaderStyle BackColor="SkyBlue" />
<AlternatingRowStyle BackColor="Yellow" />
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="CB" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
когда я смотрю на источник после того, как я запустил, флажки все названы по-другому, чем то, что я дал им идентификатор "CB", прикрепленный является ссылкой на источник, когда он работает
Я не уверен, что я делаю неправильно с этим
В вашем GridView
должно быть больше столбцов, потому что вы ссылаетесь на Cell[2]
в своем коде.
Вы можете попытаться использовать объект row
для поиска своего элемента управления:
CheckBox chkRow = (row.FindControl("CB") as CheckBox);