M
mark4asp
This is the solution to the problem I had !! I thought I'd post this
here because I had so much trouble figuring out what was wrong with my
code!
Data is stored in a cached view which is bound to a GridView.
One of the columns - Style - has 4 possible values:
"A" "P" "U" ""
I want to display actual words in my grid instead of these letters
(such as "Active", "Passive", "Uncontrained", or "".
q1: Can I use DataFormatString to do this? (I can't see how!)
q2: If not q1 can I use OnRowBound to do it - if so how?
The single character data from the database is converted to a
VarChar(13) before it leaves SQL Server - I did that because I thought
there was a possibility that the column only has 1 character in it! -
as I have tried to do this OnRowBound and failed
Cast(A.Style as VarChar(13)) as 'Style'
The following method works with the GridView shown:
protected void gvAwarded_RowDataBound(
object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string cStyle = e.Row.Cells[5].Text;
switch (cStyle)
{
case "A": e.Row.Cells[5].Text = "Active"; break;
case "P": e.Row.Cells[5].Text = "Passive"; break;
case "U": e.Row.Cells[5].Text = "Unconstrained"; break;
default: e.Row.Cells[5].Text = ""; break;
}
}
}
<asp:GridView ID="gvAwarded" AllowPaging="true"
AllowSorting="true" AutoGenerateColumns="false"
OnPageIndexChanging="gvAwarded_PageIndexChanging"
OnSorting="gvAwarded_Sorting" runat="server"
OnRowDataBound="gvAwarded_RowDataBound" >
<Columns>
...
...
<asp:BoundField DataField="Style"
HeaderText="Style" SortExpression="Style" >
<ItemStyle Width="8%" CssClass="acol6" />
...
</asp:BoundField>
</Columns>
</asp:GridView>
PS1: The Style column is the 6th in the GridView
PS2: "Unconstrained" is 13 characters in length.
here because I had so much trouble figuring out what was wrong with my
code!
Data is stored in a cached view which is bound to a GridView.
One of the columns - Style - has 4 possible values:
"A" "P" "U" ""
I want to display actual words in my grid instead of these letters
(such as "Active", "Passive", "Uncontrained", or "".
q1: Can I use DataFormatString to do this? (I can't see how!)
q2: If not q1 can I use OnRowBound to do it - if so how?
The single character data from the database is converted to a
VarChar(13) before it leaves SQL Server - I did that because I thought
there was a possibility that the column only has 1 character in it! -
as I have tried to do this OnRowBound and failed
Cast(A.Style as VarChar(13)) as 'Style'
The following method works with the GridView shown:
protected void gvAwarded_RowDataBound(
object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string cStyle = e.Row.Cells[5].Text;
switch (cStyle)
{
case "A": e.Row.Cells[5].Text = "Active"; break;
case "P": e.Row.Cells[5].Text = "Passive"; break;
case "U": e.Row.Cells[5].Text = "Unconstrained"; break;
default: e.Row.Cells[5].Text = ""; break;
}
}
}
<asp:GridView ID="gvAwarded" AllowPaging="true"
AllowSorting="true" AutoGenerateColumns="false"
OnPageIndexChanging="gvAwarded_PageIndexChanging"
OnSorting="gvAwarded_Sorting" runat="server"
OnRowDataBound="gvAwarded_RowDataBound" >
<Columns>
...
...
<asp:BoundField DataField="Style"
HeaderText="Style" SortExpression="Style" >
<ItemStyle Width="8%" CssClass="acol6" />
...
</asp:BoundField>
</Columns>
</asp:GridView>
PS1: The Style column is the 6th in the GridView
PS2: "Unconstrained" is 13 characters in length.