這是一個主 - 明細表格。 Master是一個GridView。而Detail則是一個DetailsView。asp.net使gridView列隱形
整個事情是通過編程實現的。
從代碼中可以看到,DetailsView使用主對象的ID來檢索Detail項。
我需要使Master-GridView的ID列不可見。因爲這對頁面的用戶來說是無足輕重的。但它不能損害頁面邏輯。
但代碼行GridView1.Columns[1].Visible = false;
正在生成異常。
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
我該如何解決這個問題?
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindData();
}
}
protected void BindData()
{
List<Order> orders = Order.Get();
GridView1.DataSource = orders;
GridView1.DataBind();
// This is giving Error...............!!!
GridView1.Columns[1].Visible = false;
// At first, when the page first loads,
// GridView1.SelectedIndex == -1
// So, this is done to automatically select the 1st item.
if (GridView1.SelectedIndex < 0)
{
GridView1.SelectedIndex = 0;
}
int selRowIndex = GridView1.SelectedIndex;
int selMasterId = Convert.ToInt32(GridView1.Rows[selRowIndex].Cells[1].Text);
Order master = Order.Get(selMasterId);
labItemsCount.Text = master.Items.Count.ToString();
DetailsView1.DataSource = master.Items;
DetailsView1.DataBind();
}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
BindData();
}
protected void DetailsView1_PageIndexChanging(object sender, DetailsViewPageEventArgs e)
{
DetailsView1.PageIndex = e.NewPageIndex;
BindData();
}
}
什麼是錯誤? – Phaedrus 2009-11-30 17:49:02