|
code
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
HyperLinkField and OnRowDataBoundHi;
How can I access a HyperLinkField in a GridView in the OnRowDataBound call? Looking at what is passed in it looks like at that point all that exists is the HyperLink control that HyperLinkField creates. Also very weird that there is no ID="name" attribute for HyperLinkField. Any ideas? -- thanks - dave david_at_windward_dot_net http://www.windwardreports.com Cubicle Wars - http://www.windwardreports.com/film.htm Hi David,
DataControlField (HyperLinkField inherits from DataControlField) is an abstract class that inherits directly from System.Object. It's not a normal server control, therefore it doesn't have an ID property. To access it in OnRowDataBound, you have to use the column index: protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { DataControlFieldCell dcfc = e.Row.Cells[2] as DataControlFieldCell; HyperLinkField hlf = dcfc.ContainingField as HyperLinkField; hlf.Text = "Test"; hlf.NavigateUrl = "about:blank"; } } Let me know if this answered your question. Also, as I mentioned in your another post, you can find more info about DataControlField here: #Cutting Edge: Custom Data Control Fields -- MSDN Magazine, January 2006 http://msdn.microsoft.com/msdnmag/issues/06/01/CuttingEdge/ DataControlField is an abstract class that inherits directly from System.Object. It implements the IStateManager interface. Sincerely, Walter Wang (waw***@online.microsoft.com, remove 'online.') Microsoft Online Community Support ================================================== Get notification to my posts through email? Please refer to http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif ications. If you are using Outlook Express, please make sure you clear the check box "Tools/Options/Read: Get 300 headers at a time" to see your reply promptly. Note: The MSDN Managed Newsgroup support offering is for non-urgent issues where an initial response from the community or a Microsoft Support Engineer within 1 business day is acceptable. Please note that each follow up response may take approximately 2 business days as the support professional working with you may need further investigation to reach the most efficient resolution. The offering is not appropriate for situations that require urgent, real-time or phone-based interactions or complex project analysis and dump analysis issues. Issues of this nature are best handled working with a dedicated Microsoft Support Engineer by contacting Microsoft Customer Support Services (CSS) at http://msdn.microsoft.com/subscriptions/support/default.aspx. ================================================== This posting is provided "AS IS" with no warranties, and confers no rights. Hi;
This gets me closer. What I need to do is disable the link and change the image. And I need this for both ButtonField (Image type) and HyperLinkField. There does not seem to be a clean way inside controls I create that inherit from those classes to then disable the control written to the page. -- Show quoteHide quotethanks - dave david_at_windward_dot_net http://www.windwardreports.com Cubicle Wars - http://www.windwardreports.com/film.htm "Walter Wang [MSFT]" wrote: > Hi David, > > DataControlField (HyperLinkField inherits from DataControlField) is an > abstract class that inherits directly from System.Object. It's not a normal > server control, therefore it doesn't have an ID property. > > To access it in OnRowDataBound, you have to use the column index: > > protected void GridView1_RowDataBound(object sender, > GridViewRowEventArgs e) > { > if (e.Row.RowType == DataControlRowType.DataRow) > { > DataControlFieldCell dcfc = e.Row.Cells[2] as > DataControlFieldCell; > HyperLinkField hlf = dcfc.ContainingField as HyperLinkField; > hlf.Text = "Test"; > hlf.NavigateUrl = "about:blank"; > } > } > > Let me know if this answered your question. Also, as I mentioned in your > another post, you can find more info about DataControlField here: > > #Cutting Edge: Custom Data Control Fields -- MSDN Magazine, January 2006 > http://msdn.microsoft.com/msdnmag/issues/06/01/CuttingEdge/ > DataControlField is an abstract class that inherits directly from > System.Object. It implements the IStateManager interface. > > Sincerely, > Walter Wang (waw***@online.microsoft.com, remove 'online.') > Microsoft Online Community Support > > ================================================== > Get notification to my posts through email? Please refer to > http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif > ications. If you are using Outlook Express, please make sure you clear the > check box "Tools/Options/Read: Get 300 headers at a time" to see your reply > promptly. > > Note: The MSDN Managed Newsgroup support offering is for non-urgent issues > where an initial response from the community or a Microsoft Support > Engineer within 1 business day is acceptable. Please note that each follow > up response may take approximately 2 business days as the support > professional working with you may need further investigation to reach the > most efficient resolution. The offering is not appropriate for situations > that require urgent, real-time or phone-based interactions or complex > project analysis and dump analysis issues. Issues of this nature are best > handled working with a dedicated Microsoft Support Engineer by contacting > Microsoft Customer Support Services (CSS) at > http://msdn.microsoft.com/subscriptions/support/default.aspx. > ================================================== > > This posting is provided "AS IS" with no warranties, and confers no rights. > > Hi David,
I understand that you want to disable the HyperLink inside the HyperLinkField. HyperLink inherits from WebControl which has a property named "Enabled", when set to false, it will display a visual greyed output to let the user know it's disabled. Unfortunately HyperLinkField doesn't expose the HyperLink inside it. You will have to use other workarounds. First workaround is which I recommended: you can use the TemplateField approach which let you have you full control of the controls inside it. You can use a HyperLink there and set its Enabled property by demand. I also understands that you already have existing code work with DataControlField, you could use second workaround: protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { DataControlFieldCell dcfc = e.Row.Cells[2] as DataControlFieldCell; HyperLinkField hlf = dcfc.ContainingField as HyperLinkField; hlf.Text = "Test"; hlf.NavigateUrl = "about:blank"; (dcfc.Controls[0] as HyperLink).Enabled = false; } } Please note we're using undocumented index 0 to access the HyperLink, this might be changed in other versions of ASP.NET without notice. Third workaround is to create your own HyperLinkField and expose the internal HyperLink control. Let me know what do you think of these approaches. Regards, Walter Wang (waw***@online.microsoft.com, remove 'online.') Microsoft Online Community Support ================================================== When responding to posts, please "Reply to Group" via your newsreader so that others may learn and benefit from your issue. ================================================== This posting is provided "AS IS" with no warranties, and confers no rights. ok - thanks
-- Show quoteHide quotethanks - dave david_at_windward_dot_net http://www.windwardreports.com Cubicle Wars - http://www.windwardreports.com/film.htm "Walter Wang [MSFT]" wrote: > Hi David, > > I understand that you want to disable the HyperLink inside the > HyperLinkField. HyperLink inherits from WebControl which has a property > named "Enabled", when set to false, it will display a visual greyed output > to let the user know it's disabled. > > Unfortunately HyperLinkField doesn't expose the HyperLink inside it. You > will have to use other workarounds. > > First workaround is which I recommended: you can use the TemplateField > approach which let you have you full control of the controls inside it. You > can use a HyperLink there and set its Enabled property by demand. > > I also understands that you already have existing code work with > DataControlField, you could use second workaround: > > protected void GridView1_RowDataBound(object sender, > GridViewRowEventArgs e) > { > if (e.Row.RowType == DataControlRowType.DataRow) > { > DataControlFieldCell dcfc = e.Row.Cells[2] as > DataControlFieldCell; > HyperLinkField hlf = dcfc.ContainingField as HyperLinkField; > hlf.Text = "Test"; > hlf.NavigateUrl = "about:blank"; > (dcfc.Controls[0] as HyperLink).Enabled = false; > } > } > > Please note we're using undocumented index 0 to access the HyperLink, this > might be changed in other versions of ASP.NET without notice. > > Third workaround is to create your own HyperLinkField and expose the > internal HyperLink control. > > Let me know what do you think of these approaches. > > Regards, > Walter Wang (waw***@online.microsoft.com, remove 'online.') > Microsoft Online Community Support > > ================================================== > When responding to posts, please "Reply to Group" via your newsreader so > that others may learn and benefit from your issue. > ================================================== > > This posting is provided "AS IS" with no warranties, and confers no rights. > > Hi,
this works very well, but if I try to do a thing like this: protected void grv_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { ................................. ................................. if (something) { hlf.DataNavigateUrlFormatString = "Page.aspx?ID={0}"; } else { hlf.DataNavigateUrlFormatString = "Print/Page.aspx?ID={0}"; } } I have some problems... The row affected is the next one. Where is the error? Thanks you. Paolo From http://developmentnow.com/g/15_2006_10_0_0_841507/HyperLinkField-and-OnRowDataBound.htm Posted via DevelopmentNow.com Groups http://www.developmentnow.com
only for expert: what's wrong with this code?
Enabling Windows Authentication from inside Forms Authentication (ASP.NET 2.0) How do I get a bitmap from the theme? visibly disable img link Can a repeater's ItemTemplate instantiate derived classes? Visual Development of Web Controls for SharePoint extending web controls possible calendar bug Help on java script navigator for database available? |
|||||||||||||||||||||||