簡體   English   中英

使用C#ASP.NET綁定到Gridview之前如何獲取值

[英]How to get values before bind into Gridview using c# asp.net

我正在從數據庫中檢索一些數據並打算使用c#asp.net在Grid視圖中進行綁定。首先我想解釋一下我的代碼,然后再解釋我的要求。

的Index.aspx:

    <asp:GridView ID="comnt_Gridview" runat="server" AutoGenerateColumns="false" Width="100%" CssClass="table table-striped table-bordered margin-top-zero" OnRowDataBound="comnt_Gridview_RowDataBound"  DataKeyNames="Health_Comment_ID"  >
<Columns>
<asp:TemplateField HeaderText="Sl. No" ItemStyle-CssClass="col-md-1 col-sm-1">
<ItemTemplate>
<%# Container.DataItemIndex + 1 %>
</ItemTemplate>
<ItemStyle CssClass="col-md-1 col-sm-1"></ItemStyle>
</asp:TemplateField>
<asp:TemplateField HeaderText="Health ID" ItemStyle-CssClass="col-md-1 col-sm-1" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:Label ID="healthid" runat="server" Text='<%#Eval("Health_ID") %>'></asp:Label>
</ItemTemplate>

<ItemStyle HorizontalAlign="Center" CssClass="col-md-1 col-sm-1"></ItemStyle>
</asp:TemplateField>
<asp:TemplateField HeaderText="Name" ItemStyle-CssClass="col-md-1 col-sm-1" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:Label ID="Name" runat="server" Text='<%#Eval("Health_Comment_Name") %>'></asp:Label>
</ItemTemplate>

<ItemStyle HorizontalAlign="Center" CssClass="col-md-1 col-sm-1"></ItemStyle>
</asp:TemplateField>
<asp:TemplateField HeaderText="Email" ItemStyle-CssClass="col-md-2 col-sm-2" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:Label ID="Email" runat="server" Text='<%#Eval("Health_comment_Email") %>'></asp:Label>
</ItemTemplate>

<ItemStyle HorizontalAlign="Center" CssClass="col-md-2 col-sm-2"></ItemStyle>
</asp:TemplateField>
<asp:TemplateField HeaderText="Web Url" ItemStyle-CssClass="col-md-2 col-sm-2" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:Label ID="Url" runat="server" Text='<%#Eval("Health_Comment_Website") %>'></asp:Label>
</ItemTemplate>

<ItemStyle HorizontalAlign="Center" CssClass="col-md-2 col-sm-2"></ItemStyle>
</asp:TemplateField>
<asp:TemplateField HeaderText="Comments" ItemStyle-CssClass="col-md-3 col-sm-3" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:Label ID="lblRemark" runat="server"Text='<%# Eval("Health_Comment_Message").ToString().Length > 100? (Eval("Health_Comment_Message") as string).Substring(0,100) + " ..." : Eval("Health_Comment_Message")  %>'ToolTip='<%# Eval("Health_Comment_Message") %> '> </asp:Label>
</ItemTemplate>

<ItemStyle HorizontalAlign="Center" CssClass="col-md-3 col-sm-3">
</ItemStyle>
</asp:TemplateField>
<asp:TemplateField HeaderText="Status" ItemStyle-CssClass="col-md-1 col-sm-1" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<div class="btn-group btn-toggle"> 
<asp:LinkButton ID="accept" CssClass="btn btn-xs btn-inactive" CommandName="Accept" runat="server" style="padding:1px 2px;" Text="Accept" onclick="accept_click" CommandArgument='<%#Eval("Health_Comment_ID")%>'></asp:LinkButton>
 <asp:LinkButton ID="reject" runat="server" Text="Reject" CommandName="Reject"  CssClass="btn btn-xs btn-success active"  style="padding:1px 2px;"  onclick="reject_Click" CommandArgument='<%#Eval("Health_Comment_ID")%>' ></asp:LinkButton>
</div>
</ItemTemplate>

<ItemStyle HorizontalAlign="Center" CssClass="col-md-2 col-sm-2"></ItemStyle>
 </asp:TemplateField>
<asp:TemplateField HeaderText="Action" ItemStyle-CssClass="col-md-2 col-sm-2" >
<ItemTemplate>
<a href="javascript:void(0)" data-toggle="tooltip" title="" class="btn btn-xs btn-success" data-original-title="View" onClick="doctordetailsshowdiv()"><i class="fa fa-eye"></i></a>
</ItemTemplate>
<ItemStyle CssClass="col-md-2 col-sm-2"></ItemStyle>
</asp:TemplateField>
</Columns>
</asp:GridView>

index.aspx.cs:

namespace ODIYA_Doctor_Admin.Module.Front_End_Management
{
    public partial class HealthComment : System.Web.UI.Page
    {
        private healthCommentBL objhealthCommentBL = new healthCommentBL();
        protected void Page_Load(object sender, EventArgs e)
        {

                lbluname.Text = Session["username"].ToString().Substring(0, Session["username"].ToString().IndexOf(' '));
                Session["update"] = Server.UrlEncode(System.DateTime.Now.ToString());
                comnt_Gridview.DataSource = objhealthCommentBL.getHealthCommentDetails();
                comnt_Gridview.DataBind();

}
protected void comnt_Gridview_RowDataBound(object sender, GridViewRowEventArgs e)
        {

        }
}
}

我從數據庫中獲取了Health_Comment_Status歸檔值。這里我的要求是綁定到gridview之前,如果Health_Comment_Status值為R ,則gridview的拒絕鏈接按鈕顏色將為紅色,否則該網格視圖的接受鏈接按鈕顏色將為紅色。綠色。同樣,在鏈接按鈕的每次單擊事件內部,我想檢查鏈接按鈕的背景色,以便我可以更新DB。中的狀態。請幫助我。

現在,事情對我來說更加清楚了。 我將答案分為兩部分。 在第一部分中,我將說明如何更改背景色,在第二部分中,將說明如何從鏈接(或按鈕)訪問OnClick事件中的狀態值。

更改背景顏色:

要更改GridView控件中“拒絕”鏈接的背景顏色,可以將其掛接到RowDataBound事件中。 這是一個代碼示例:

protected void EmployeeAvailabilityGridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
    try
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {                  
            if(DataBinder.Eval(e.Row.DataItem, "Health_Comment_Status") == "R")
            {
                e.Row.Cell[2].BackColor = System.Drawing.Color.Red;
            }
        }
    }
    catch (Exception ex)
    {
        //ErrorLabel.Text = ex.Message;
    }
}

請注意,您需要更改索引以代表正確的單元格。 如果要基於列名獲取正確的單元格,則可以執行本文中所述的操作: 如何在asp.net中的GridView中通過列名而不是通過索引獲取單元格值

您還可以通過替換以下行來更改整個行的背景色:

e.Row.Cell[2].BackColor = System.Drawing.Color.Red;

用這一行:

e.Row.BackColor = System.Drawing.Color.Red;

在OnClick事件中訪問行信息:

將運行狀況注釋狀態值添加到“接受”鏈接的commandargument屬性。 首先按如下所示更新鏈接:

<asp:LinkButton ID="accept" CssClass="btn btn-xs btn-inactive" CommandName="Accept" runat="server" style="padding:1px 2px;" Text="Accept" onclick="accept_click" CommandArgument='<%#Eval("Health_Comment_ID")%>|<%#Eval("Health_Comment_Status")%>'></asp:LinkButton>

其次,將OnClick事件處理程序更改為如下所示:

protected void linkButton_click(object sender, EventArgs e)
{
    LinkButton btn = (LinkButton)sender;
    string[] commandArgs = btn.CommandArgument.Split('|')

    if(commandArgs.Length <= 1 then
        return;

    string healthCommentStatus = commandArgs[1];
}

還要在此處注意更新代碼以使用正確的單元格索引。 或者,您可以使用前面提到的相同解決方案通過列名獲取單元格。

暫無
暫無

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

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