2015-08-08 5 views
1

Я извлекаю некоторые данные из базы данных и собираюсь привязываться в режиме Grid с помощью C# asp.net. Сначала я хотел бы объяснить свой код, а затем я объясню, требование.Как получить значения перед связыванием в Gridview с помощью C# asp.net

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 подано значения я выборка из database.Here моего требования перед привязкой к gridview, если значение Health_Comment_Status будет R цвет кнопки отклонения от gridview будет красным другим цветом. Цвет кнопки приема ссылки из того же вида сетки будет зеленым. Аналогично внутри каждого события клика кнопки ссылки. Я хочу проверить цвет кнопки ссылки, чтобы я мог обновлять статус в DB.please помогите мне.

ответ

2

Теперь мне стало намного понятнее. Я разделил свой ответ на две части. В первом объясню, как изменить цвет фона, а во второй части я объясню, как получить доступ к значению статуса в событии 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; 
    } 
} 

Обратите внимание, что вам нужно изменить индекс, чтобы представить правильную ячейку. Если вы хотите, чтобы получить правильную ячейку на основе имени столбца вы могли бы сделать что-то подобное описано в этом посте: How to get the cell value by column name not by index in GridView in asp.net

Вы также можете изменить цвет фона всей строки, заменив строку:

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

с этой линией: информация строки

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

доступа в OnClick событие:

Добавьте значение статуса комментариев состояния работоспособности в свойство commandargument ссылки Accept. Сначала обновите ссылку следующим образом:

<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 EventHandler к чему-то вроде этого:

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]; 
} 

Также здесь отметить, чтобы обновить код, чтобы использовать правильный индекс ячейки. Или вы можете использовать одно и то же решение, упомянутое ранее, чтобы получить имя ячейки по столбцу.

+0

@ Maurits: Хорошо, позвольте мне объяснить еще раз. В моей базе данных есть имя_файла 'Health_Comment_Status', которое извлекается вызовом метода' objhealthCommentBL.getHealthCommentDetails() 'вместе с другими данными. Мне нужно, когда это значение имеет значение' Кнопка отклонения ссылки отобразит красный цвет в Gridview, и аналогично, когда пользователь нажмет кнопку отклонения, статус будет проверяться. – satya

+0

@ Maurits: Хорошо, ваш ответ помог мне. Можете ли вы помочь мне в еще одном сомнении. Теперь моя кнопка отказа - Red.I нужно, если я нажал на accept linkbutton, статус должен снова проверяться внутри события onclick. – satya

+0

@ Maurits: Вы можете проверить ячейки gridview в моем сообщении. В первой ячейке нет статуса как вещь. – satya