1
我目前有一個通過c#方法通過數據庫填充的gridview。突出顯示和編輯網格
我想知道是否有辦法在行上任何地方單擊時選擇行,而不是完全使用選擇按鈕。然後將該行的信息發回並填充網頁上的其他區域。
有沒有比gridview更好的網格呢?我應該外包給jQuery嗎?或者是我應該需要的所有gridview?
我目前有一個通過c#方法通過數據庫填充的gridview。突出顯示和編輯網格
我想知道是否有辦法在行上任何地方單擊時選擇行,而不是完全使用選擇按鈕。然後將該行的信息發回並填充網頁上的其他區域。
有沒有比gridview更好的網格呢?我應該外包給jQuery嗎?或者是我應該需要的所有gridview?
你需要做的是開發一個可點擊行的GridView。最好的選擇是遵循鏈接中的指示。如果你使用VB,你可以沿着這條路線前進。用戶也將其轉換爲C#,它在評論部分。如果包括它,你就不會看到它。
繼承人的鏈接我已經保存:http://aspadvice.com/blogs/joteke/archive/2006/01/07/14576.aspx
using System;
using System.ComponentModel;
using System.Configuration;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace CustomGridView
{
/// <summary>
/// Summary description for ClickableGridView
/// </summary>
public class ClickableGridView : GridView
{
public string RowCssClass
{
get
{
string rowClass = (string)ViewState["rowClass"];
if (!string.IsNullOrEmpty(rowClass))
return rowClass;
else
return string.Empty;
}
set
{
ViewState["rowClass"] = value;
}
}
public string HoverRowCssClass
{
get
{
string hoverRowClass = (string)ViewState["hoverRowClass"];
if (!string.IsNullOrEmpty(hoverRowClass))
return hoverRowClass;
else
return string.Empty;
}
set
{
ViewState["hoverRowClass"] = value;
}
}
private static readonly object RowClickedEventKey = new object();
public event GridViewRowClicked RowClicked;
protected virtual void OnRowClicked(GridViewRowClickedEventArgs e)
{
if (RowClicked != null)
RowClicked(this, e);
}
protected override void RaisePostBackEvent(string eventArgument)
{
if (eventArgument.StartsWith("rc"))
{
int index = Int32.Parse(eventArgument.Substring(2));
GridViewRowClickedEventArgs args = new GridViewRowClickedEventArgs(Rows[index]);
OnRowClicked(args);
}
else
base.RaisePostBackEvent(eventArgument);
}
protected override void PrepareControlHierarchy()
{
base.PrepareControlHierarchy();
for (int i = 0; i < Rows.Count; i++)
{
string argsData = "rc" + Rows[i].RowIndex.ToString();
Rows[i].Attributes.Add("onclick", Page.ClientScript.GetPostBackEventReference(this, argsData));
if (RowCssClass != string.Empty)
Rows[i].Attributes.Add("onmouseout", "this.className='" + RowCssClass + "';");
if (HoverRowCssClass != string.Empty)
Rows[i].Attributes.Add("onmouseover", "this.className='" + HoverRowCssClass + "';");
}
}
}
public class GridViewRowClickedEventArgs : EventArgs
{
private GridViewRow _row;
public GridViewRowClickedEventArgs(GridViewRow aRow)
: base()
{
_row = aRow;
}
public GridViewRow Row
{
get
{ return _row; }
}
}
public delegate void GridViewRowClicked(object sender, GridViewRowClickedEventArgs args);
}
謝謝您的答覆。我在C#工作,對處理程序的知識非常有限。我需要將主處理程序代碼指向我的網格嗎?如果是這樣,怎麼樣? – user1512593 2012-08-07 23:52:29