Ich versuche, einen Text vorangestellt wird, was bereits in einer GridView
Zelle im RowDataBound
Ereignisse:seltsames Verhalten bei dem Versuch, Text in einer Gridview-Zelle zu aktualisieren
protected void gvPatientSearch_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataRow dr = ((DataRowView)e.Row.DataItem).Row;
if (Convert.ToBoolean(dr["Confidential"]))
{
String name = String.Copy(e.Row.Cells[1].Text);
//the problem is the following line
e.Row.Cells[1].Text = "<b><font color='red'>!</font></b>" + name;
}
}
}
Aus irgendeinem Grunde scheint es, dass, egal was ich Wurde der ursprüngliche Text gelöscht? Wenn ich die Zeile unter dem Kommentar entferne, wird der Name normalerweise ohne das Ausrufezeichen angezeigt. Wenn ich den Append-Code hinzufüge, wird aus irgendeinem Grund der ursprüngliche Text zu einer leeren Zeichenfolge und ich erhalte nur das Ausrufezeichen. Ich habe dies mit und ohne die String.Copy
versucht - ich dachte nicht, dass dies erforderlich wäre, aber dachte, ich würde es nur für den Fall versuchen. Kein Glück.
Ich denke nicht, dass dies relevant ist, aber die erste Spalte in der Zeile ist eine ausgeblendete Spalte, die eine 1 oder eine 0 enthält. Wenn der Wert 1 ist, möchte ich das Ausrufezeichen hinzufügen. Die Daten sind da und dieser Teil wird korrekt aufgerufen, ich kann den Namen einfach nicht erhalten.
Irgendwelche Ideen, warum das passieren würde?
EDIT: Front-End-Code unten
<asp:GridView ID="gvPatientSearch" runat="server" Width="100%" CellPadding="4" ForeColor="#333333" GridLines="None" AllowPaging="True" AllowSorting="True"
PageSize="25" OnPageIndexChanging="gvPatientSearch_PageIndexChanging" OnSorting="gvPatientSearch_Sorting" OnRowDataBound="gvPatientSearch_RowDataBound"
AutoGenerateColumns="false" PagerSettings-Position="TopAndBottom" PagerStyle-HorizontalAlign="Right" PagerSettings-Mode="NumericFirstLast" PagerSettings-PageButtonCount="5"
PagerSettings-FirstPageText=" First " PagerSettings-LastPageText=" Last " PagerSettings-PreviousPageText=" Previous " PagerSettings-NextPageText=" Next ">
<AlternatingRowStyle BackColor="White" />
<EditRowStyle BackColor="#2461BF" />
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" />
<RowStyle BackColor="#EFF3FB" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#F5F7FB" />
<SortedAscendingHeaderStyle BackColor="#6D95E1" />
<SortedDescendingCellStyle BackColor="#E9EBEF" />
<SortedDescendingHeaderStyle BackColor="#4870BE" />
<Columns>
<asp:BoundField HeaderText="Confidential" DataField="Confidential" ItemStyle-CssClass="hiddencol" HeaderStyle-CssClass="hiddencol"></asp:BoundField>
<asp:HyperLinkField DataTextField="PatientName" DataNavigateUrlFields="PatientIdInternal" DataNavigateUrlFormatString="PatientProfile.aspx?InternalID={0}" HeaderText="Patient Name"
SortExpression="PatientName" />
<asp:BoundField DataField="PatientID" HeaderText="Patient ID" SortExpression="PatientID" />
<asp:BoundField DataField="AccountNumber" HeaderText="Account Number" SortExpression="AccountNumber" />
<asp:BoundField DataField="DateOfBirth" HeaderText="Date Of Birth" SortExpression="DateOfBirth" DataFormatString="{0:d}" />
<asp:BoundField DataField="PracticeName" HeaderText="Practice Name" SortExpression="PracticeName" />
<asp:BoundField DataField="PatientIdInternal" HeaderText="Internal ID" SortExpression="PatientIdInternal" Visible="false" />
</Columns>
</asp:GridView>
kann ich die Werte aller anderen Bereichen sehen richtig in Visual Studio an diesem Teil des Codes, nur das Namensfeld, das ich zu ändern versuche zeigt bis zu wird als leere Zeichenfolge angezeigt.
Können Sie das Front-End in Bezug auf dieses Post? Sie können den Text aus einer Zelle in einem RowDataBound-Ereignis nicht abrufen, wenn sich der Text nicht in einem Steuerelement befindet. Versuchen Sie, den Text zu einem Label oder einem Literal zu machen: 'label myLabel = e.row.findcontrol (" meinLabel ")', 'String name = myLabel.Text' – Santi
@TylerRoper siehe update –
sehe meine Antwort unten, hoffentlich hilft! – Santi