The problem:
when dealing with xml binding , in my case i have attributes on each row.
not all the attributes are existing in the row , so when i use the binding method , i get failed.
e.g.
old code
<div id="divDynmic" runat="server" visible='<%# Eval("AllowDynamicParam").ToString().Trim() == "true" %>'></div>
if AllowDynamicParam is not exist in your xml as an attribute , you get failed.
so i solved this like this - i created the next method :
public string GetData(object o, string key,string defaultValue)
{
GridViewRow gvr = o as GridViewRow;
XPathNavigator nav = ((IXPathNavigable)gvr.DataItem).CreateNavigator();
string attribValue = nav.GetAttribute(key, "");
if (!string.IsNullOrEmpty(attribValue))
return attribValue;
return defaultValue;
}
the main problem was to deal with
gvr.DataItem - its return XmlDataSourceNodeDescriptor object and its sealed - no docs on it.
so my new code look like this:
<div id="divDynmic" runat="server" visible='<%# GetData(Container,"DynamicParamMandatory","false") == "true" %>'></div>
enjoy
Yaniv Tzanany
No comments:
Post a Comment