curiouswebster
asked on
Need to rename Grid column names in a Dynamic Data website
I have created a table which maps column names to the display names we want Dynamic Data to show. And I have succeeded in a few cases, like the Details page, getting the display name inserted and shown by Dynamic Data. But when it comes to the List.aspx page, the Label_PreRender() event only deals with relations, and does not fire when a column is being created.
Can anyone give me some advice? This page inherits from System.Web.UI.Page, and I need to find how to overwrite the column names.
Thanks,
newbieweb
Can anyone give me some advice? This page inherits from System.Web.UI.Page, and I need to find how to overwrite the column names.
Thanks,
newbieweb
ASKER
I do C#, but any time I have tried to change the DisplayName I have found them to be read only. I will try to decifer what you'd described...
ASKER
I found the GridView1_RowCreated() event and added the code in C#, but it does not stop at a breakpoint in that event. I need an event that will fire each and every time the Grid is populated. Do you know that one?
newbieweb
newbieweb
If you are looking for an event that will fire every time there is a postback, the Gridview PreRender should do the trick.
ASKER
I think I found the problem:
<asp:Label runat="server" Text='<%# Eval("DisplayName") %>' OnPreRender="Label_PreRend er" />
What does this line tell you about what inside of Label_PreRender that I need to change with the correct display name?
<asp:Label runat="server" Text='<%# Eval("DisplayName") %>' OnPreRender="Label_PreRend
What does this line tell you about what inside of Label_PreRender that I need to change with the correct display name?
Ahh, I see what you are saying.
Try adding this to code to your "Label_PreRender" event handler:
protected void Label_PreRender(object sender, EventArgs e) {
Label lbl = (Label)sender;
lbl.Text = "New Display Name";
}
Try adding this to code to your "Label_PreRender" event handler:
protected void Label_PreRender(object sender, EventArgs e) {
Label lbl = (Label)sender;
lbl.Text = "New Display Name";
}
ASKER
I had been doing so successfully, but only in pages inheriting from:
System.Web.DynamicData.Ent ityTemplat eUserContr ol
When I inherit from System.Web.UI.Page I can not do the above, since there is no Label_PreRender event.
I am stumped!
newbieweb
System.Web.DynamicData.Ent
When I inherit from System.Web.UI.Page I can not do the above, since there is no Label_PreRender event.
I am stumped!
newbieweb
Hmm, perhaps I am not understanding the nature of the problem. If there is not an event handler, then simply add the event handler.
ASKER
How do I associate the Label_PreRender event with the label? I see no label in the entire page.
<asp:Content ID="headContent" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:DynamicDataManager ID="DynamicDataManager1" runat="server" AutoLoadForeignKeys="true">
<DataControls>
<asp:DataControlReference ControlID="FormView1" />
</DataControls>
</asp:DynamicDataManager>
<h2 class="DDSubHeader">Entry from table <%= /*table.DisplayName*/ Title %></h2>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:ValidationSummary ID="ValidationSummary1" runat="server" EnableClientScript="true"
HeaderText="List of validation errors" CssClass="DDValidator" />
<asp:DynamicValidator runat="server" ID="DetailsViewValidator" ControlToValidate="FormView1" Display="None" CssClass="DDValidator" />
<asp:FormView runat="server" ID="FormView1" DataSourceID="DetailsDataSource" OnItemDeleted="FormView1_ItemDeleted" RenderOuterTable="false">
<ItemTemplate>
<table id="detailsTable" class="DDDetailsTable" cellpadding="6">
<asp:DynamicEntity runat="server" />
<tr class="td">
<td colspan="2">
<asp:DynamicHyperLink runat="server" Action="Edit" Text="Edit" />
<asp:LinkButton runat="server" CommandName="Delete" Text="Delete"
OnClientClick='return confirm("Are you sure you want to delete this item?");' />
</td>
</tr>
</table>
</ItemTemplate>
<EmptyDataTemplate>
<div class="DDNoItem">No such item.</div>
</EmptyDataTemplate>
</asp:FormView>
<asp:EntityDataSource ID="DetailsDataSource" runat="server" EnableDelete="true" />
<asp:QueryExtender TargetControlID="DetailsDataSource" ID="DetailsQueryExtender" runat="server">
<asp:DynamicRouteExpression />
</asp:QueryExtender>
<br />
<div class="DDBottomHyperLink">
<asp:DynamicHyperLink ID="ListHyperLink" runat="server" Action="List">Show all items</asp:DynamicHyperLink>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thanks!
Protected Sub GridView1_RowCreated(ByVal
If e.Row.RowType = DataControlRowType.Header Then
e.Row.Cells(1).Text = “Show me the money”
End If
End Sub