我在 C# 中使用 ASP.NET。我有GridView并且需要有兩個標題。所以我用下面的代碼在資料系結后添加了另一個標題。
gridView.DataSource = dataTable;
gridView.DataBind();
GridViewRow row = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Normal);
TableHeaderCell cell = new TableHeaderCell
{
Text = titleST,
ColumnSpan = 5
};
row.Controls.Add(cell);
row.BackColor = ColorTranslator.FromHtml("#3AC0F2");
row.BorderStyle = BorderStyle.Solid;
row.BorderColor = Color.Black;
row.BorderWidth = Unit.Parse("2");
gridView.HeaderRow.Parent.Controls.AddAt(0, row);
問題是,當我嘗試從 讀取資料時gridView,不知何故第一行沒有資料。這是我讀取資料的方式:
foreach (GridViewRow row in gridView.Rows)
{
int atmpt = ((DropDownList)row.FindControl("ddlAttemptsT")).SelectedIndex;
Int64 selId = Int64.Parse(((HiddenField)row.FindControl("SelId")).Value);
double wt = int.Parse(row.Cells[2].Text);
double grade = double.Parse(((TextBox)row.FindControl("grade")).Text);
}
我想我在索引 0 處添加了新標題,洗掉了第一行。但在 GUI 中,第一行存在。我試圖這樣做,AddAt(-1, row)但這會將它添加到gridView.
關于如何解決這個問題的任何建議?請讓我知道是否需要進一步澄清我的問題。謝謝
uj5u.com熱心網友回復:
好吧,這是一個持久化的問題。
當 GV 被系結時 - 它還會為視圖狀態以及它如何記住布局設定一些“事物”。
如果在系結后添加標題?然后它將顯示,但不會持久化(因為它在系結 設定后被更改)。因此,使用現有布局 - 實際上您確實會寫完第一行。
這意味著您需要在系結程序中添加。
因此,請使用 RowCreated 事件。并將您的代碼放在該事件中 - 像這樣說:
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
GridViewRow Myrow = new GridViewRow(0, 0, DataControlRowType.Header,
DataControlRowState.Normal);
TableHeaderCell cell = new TableHeaderCell
{
Text = "My cool title",
ColumnSpan = 5
};
Myrow.Controls.Add(cell);
Myrow.BackColor = ColorTranslator.FromHtml("#3AC0F2");
Myrow.BorderStyle = BorderStyle.Solid;
Myrow.BorderColor = Color.Black;
Myrow.BorderWidth = Unit.Parse("2");
// heading actauly does not exist yet
GridView1.Controls[0].Controls.Add(Myrow);
}
}
并且您現在僅在回發時系結網格 = false。無論如何,請嘗試上述操作,它應該會持續存在,并且您的第一行現在應該可以了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/381705.html
