Я использую GridView для отображения записей из базы данных. Также я подключил гиперссылку к GridView с помощью TemplateField. Когда я пытаюсь добавить «OnClick» атрибут гиперссылке внутри события RowDateBound, я получаю следующее сообщение об ошибке ..ArgumentOutOfRangeException был необработанным кодом пользователя - (ASP .net)
GridView1.DataKeys[e.Row.RowIndex].Value = 'GridView1.DataKeys[e.Row.RowIndex]' threw an exception of type 'System.ArgumentOutOfRangeException'
сообщение = «Индекс находился вне диапазона. Должно быть неотрицательным и меньше размер коллекции \ г \ nParameter. имя: индекс»
Это кодирование внутри RowDataBound mentod ..
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
HyperLink HyperLink1 = (HyperLink)e.Row.FindControl("HyperLink1");
//The following line makes the error
HyperLink1.Attributes.Add("onclick", "ShowMyModalPopup('" + GridView1.DataKeys[e.Row.RowIndex].Value + "')");
}
}
Это "функция ShowMyModalPopup" в JavaScript
<script type="text/javascript">
function ShowMyModalPopup(userpk)
{
var modal = $find('ModalPopupExtender1');
modal.show();
WebService.FetchOneUser(userpk,DisplayResult);
}
</script>
Несмотря на то, что значение индекса равно нулю, оно выбрасывает это исключение. Может кто-нибудь, пожалуйста, объясните мне, почему возникает эта ошибка ..
Большое спасибо заранее ..
Как я могу добиться этого .. Можете ли вы пожалуйста, руководство меня .. Я передать «userPK» моей таблицы "пользователей к ShowMyModalPopup() –
Ну, если он уже приходит в GridView (через любой запрос, который вы указали), все, что вам нужно сделать, это использовать код: 'e.Row [" userPK "]. Value', чтобы получить это значение для гиперссылки. Если он еще не входит в экран GridView для отображения, вам нужно будет обновить запрос (или автоматически сгенерированный DataTable), чтобы включить его. Надеюсь это имеет смысл; это трудно объяснить, не зная точных обстоятельств. – drharris