您可以使用OnRowDataBound
事件向GridView添加屬性。
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
//add the current row number
e.Row.Attributes.Add("rowNumber", e.Row.RowIndex.ToString());
//add an item from the database
e.Row.Attributes.Add("itemID", DataBinder.Eval(e.Row.DataItem, "database_id").ToString());
//or add a click directy and redirect with javascript
e.Row.Attributes.Add("onclick", "location.href='/newPage.aspx?id=" + DataBinder.Eval(e.Row.DataItem, "database_id").ToString() + "'");
}
}
如果你沒有使用我的代碼片段中的第三個屬性,你需要處理行點擊clientside。你可以用jQuery來做到這一點。
<script type="text/javascript">
$(document).ready(function() {
$("#<%= GridView1.ClientID %> tr").click(function() {
var rowNumber = $(this).attr("rowNumber");
var itemID = $(this).attr("itemID");
alert("This is row number: " + rowNumber + ". It has ID: " + itemID);
})
});
</script>
你想對「新選擇的行」做什麼?如果你需要在代碼後面完成某些事情,你需要回傳。如果是這樣,你可以使用[UpdatePanel](https://msdn.microsoft.com/en-us/library/bb399001.aspx)。如果你需要在前端做某些事情,那麼只能採取另一種方法。 – VDWWD
我只需要知道哪個索引被點擊了,所以我可以去選擇的項目的詳細頁面,如果頁面刷新它做了幾個API調用,這減慢了網站的速度,我會看看更新面板,謝謝 – Litrico