簡體   English   中英

從SQL Data Reader格式化Gridview上的單元格

[英]Formatting Cells on Gridview from SQL Data Reader

我有一個通過SQL數據讀取器填充的網格視圖

網格視圖:

<asp:GridView ID="gridviewALL" runat="server" OnItemDataBound="Search_ItemDataBound">
</asp:GridView>

SQL數據讀取器:

SqlCommand cmd = new SqlCommand("SELECT en.dpCreatedDT AS 'Time Received', en.enStatusCH AS 'Status', en.enNotificationNoNI AS 'LSBUD Ref', cm.cmpersonfirstch AS 'First Name', cm.cmPersonLastCH AS 'Last Name', cm.cmcompanynamech AS 'Company' FROM dp_enquiry en JOIN dp_caller_master cm ON (en.encmcallerkeyfk = cm.cmCallerKeyNI) WHERE en.ennotificationnoni = @JobnoALL", conn);
        try
        {
            SqlParameter search = new SqlParameter();
            search.ParameterName = "@JobnoALL";
            search.Value = JobnoALL.Text.Trim();
            cmd.Parameters.Add(search);
            SqlDataReader dr = cmd.ExecuteReader();
            DataTable dt = new DataTable();
            dt.Load(dr);
            gridviewALL.DataSource = dt;
            gridviewALL.DataBind();
        }

當文本等於值時,我試圖更改網格視圖中單元格的格式,我之前使用listview做到了這一點,但Gridview步驟似乎有所不同。 我有以下似乎沒有任何建議的建議?

private void Search_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
    string CurrentColumn = e.Item.Cells[1].Text;
    if (CurrentColumn == "PROC")
    {
        e.Item.Cells[1].Text = "Creating PDF";
    }
    else if (CurrentColumn == "CLOS")
    {
        e.Item.Cells[1].Text = "Complete";
        e.Item.Cells[1].ForeColor = System.Drawing.Color.Green;
    }
}

它必須正在讀取標題,您需要檢查其是否為DataRow :-

 if (e.Row.RowType == DataControlRowType.DataRow)
 {
    string CurrentColumn = e.Item.Cells[1].Text;
    //your code goes here..
 }

另外,我建議您使用DataBinder.Eval方法來避免對單元格索引進行硬編碼,因為如果列順序更改,它可能會導致錯誤。

string CurrentColumn = DataBinder.Eval(e.Row.DataItem, "yourColumnName").ToString();

更新:

剛通知您,您正在使用ItemDataBound ,它是DataGrid的事件,而不是Gridview的事件。 使用RowDataBound事件代替:-

<asp:GridView ID="gridviewALL" runat="server" OnRowDataBound="gridviewALL_RowDataBound">
</asp:GridView>

您的rowDataBound事件應如下所示:

protected void gridviewALL_RowDataBound(object sender, GridViewRowEventArgs e)
{
    //your code here
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM