|
I'm building the proverbial "Address" control for our site. I don't want to hard-code the style attributes, but instead allow the developer to control the Styles for the Address Control just like the GridViews. However, even though I have a public proeprty of say "LabelStyle" that's of type "System.Web.UI.WebControls.Style", everytime I load it in the designer the designer complains that there is no such property on "System.Web.UI.UserControl". However, I DO see the element in the markup!
<uc1:AddressControl ID="AddressControl1" runat="server">
<LabelStyle CssClass="textFontLabel" />
<EditorStyle CssClass="textFont" />
</uc1:AddressControl>
How can I get this to work properly? Or can this not be done with UserControls? Do I need to use a CompositeControl?
|
|
|
|
|
If you want to make it work with the designer, you'll have to use a custom control (CompositeControl) instead as the design-time support for the usercontrol is limited in VS, it always looks at the base class UserControl to parse any nested elements you define in your user control.
|
|
|
|
|
I have a an aspx page with a MultiView. In one of the views there is an iFrame where another page is loaded and the other views just have simple html (the default view is one of the simple html ones). When I first load the page in IE everything works fine, Session_Start fires and the page loads. However, with Firefox and Opera Session_Start is fired at least twice, sometimes three times and I cannot figure out why this is happening. I tried making a session variable that gets checked in Session_start to skip the code when it fires a second time, but it seems like the first session starts and stops rapidly then another is started. Any idea why this is happening?
|
|
|
|
|
Ok, it seems as though this was happening because the page got redirected before it even loaded the first one and for some reason the first session starting wasn't good enough.
|
|
|
|
|
I want set properties to a WebControl via Reflection. The corresponding code snippet is something like this:
public void SetProperty(Control control, string propertyname, string propertyvalue)
{
Type type = control.GetType();
System.Reflection.PropertyInfo pi = type.GetProperties(propertyname);
object value = Convert.ChangeType(propertyvalue, pi.PropertyType);
pi.SetValue(control, value, null);
}
It works for most cases, but for special types like Unit or Color (Width or ForeColor for example), I get an Exception. I made some ifs for a few types so that I convert/parse them specifically to the type needed. But this way the code is quite ugly and is not guaranteed to work all the time. Anyone else know a better solution?
|
|
|
|
|
szukuro wrote: Anyone else know a better solution?
As long as I I don't know what your context is, for example why you need reflection here, then IMO it's hard to say this is a good/bad choice or whether there is a better one.
|
|
|
|
|
It's for a hobby project, kind of a WYSIWYG editor, but with server-side features. At this state the user types in some markup like <asp:TextBox ID="TextBox1" runat="server" /> and gets a TextBox created on the same page (via Ajax).
|
|
|
|
|
|
Thanks for the link, I didn't know of this method. This way I think the whole thing will be much easier to write .
Also despite this, I think my question still remains in a more general sense: How do/Can you set properties independent of their types easily (= without if and/or switch) from string input? Though now it's not really an ASP.NET question anymore..
|
|
|
|
|
In this case, you should use the the type converter of the property to convert a string value, this way will work not just with the primitive types, but also with custom types. To get the TypeConverter[^], you can use the TypeDescriptor[^], your sample code is updated a bit like this:
public void SetProperty(Control control, string propertyname, string propertyvalue)
{
Type type = control.GetType();
System.Reflection.PropertyInfo pi = type.GetProperty(propertyname);
TypeConverter converter = TypeDescriptor.GetConverter(pi.PropertyType);
object value = converter.ConvertFromInvariantString(propertyvalue);
pi.SetValue(control, value, null);
}
|
|
|
|
|
|
How do I display negative amounts in GridView control?
thanks,
Murthy here
|
|
|
|
|
Murthy Puvvada wrote: How do I display negative amounts in GridView control?
The same way you display positive amounts.
|
|
|
|
|
Maybe he has GridView with -5 rows...
"Throughout human history, we have been dependent on machines to survive. Fate, it seems, is not without a sense of irony. " - Morpheus
|
|
|
|
|
Best Regards,
Apurva Kaushal
|
|
|
|
|
Try to be more concrete.. Negative amounts of what? Negative numbers? And, what did you try? What it did you didnt like?
"Throughout human history, we have been dependent on machines to survive. Fate, it seems, is not without a sense of irony. " - Morpheus
|
|
|
|
|
Sorry that i am not clear.
but I have this $ Amount field and the negative dollar amounts come up as follows:
-36000$ displayed as ($360000)
I hope it makes my issue clear.
Thanks,
Murthy here
|
|
|
|
|
Murthy Puvvada wrote: but I have this $ Amount field and the negative dollar amounts come up as follows:
-36000$ displayed as ($360000)
Yes, that is how the culture that you are using is defined to display a negative amount.
I hope it makes my issue clear.
As you haven't said anything about what you think is wrong about this, the issue is not clear at all.
---
single minded; short sighted; long gone;
|
|
|
|
|
sorry again,
how can i change the culture to display $amounts as -$36,000 instead of ($36000)?
thanks again,
Murthy here
|
|
|
|
|
I’m populating a GridView control on an ASP.NET web page using a SQL Server 2005 stored procedure. The following subroutine is how I populate the GridView Control:
Protected Sub Load_grdEmployees()
'Purpose: Loads the grid control grdEmployees
' with employee information
'Parameters: None
'Returns: Nothing
Dim dr As SqlDataReader
Dim cn As SqlConnection = New SqlConnection(MRMFunctions.WebConfigConnString)
cn.Open()
Try
Dim cd As SqlCommand = New SqlCommand("mrmsp_EmployeeList", cn)
cd.CommandType = Data.CommandType.StoredProcedure
dr = cd.ExecuteReader
grdEmployees.DataSource = dr
grdEmployees.DataBind()
Catch ex As Exception
Msg = ex.Message
lblErr.Visible = True
lblErr.ForeColor = Drawing.Color.Red
lblErr.Font.Bold = True
lblErr.Text = Msg
Finally
cn.Close()
End Try
End Sub
The problem I’m having is I don’t know how to read the data stored in the first column on the GridView Control. I use the ID number stored in the first column to perform edits on selected records. I’m not using a SqlDataSource control on this web page.
Does anyone have any ideas on how to do this?
Thank you,
Quecumber256
|
|
|
|
|
Quecumber256 wrote: The problem I’m having is I don’t know how to read the data stored in the first column on the GridView Control.
+ You can get reference to the first cell of a row to get the value.
+ Another option is to store the key values using the DataKeyNames[^] property and you can access the value from the DataKeys collection.
|
|
|
|
|
I didn't place a SqlDataSource Control on the web page. I think because I don't have this control on the page there are no references to the DataKeyNames and DataKeys properties.
I spent the whole day trying to find examples on how to set these properties through code. However, everything I did find required that a SqlDataSource Control be present.
My web page requires a greater amount of control than the SqlDataSource will allow.
Thank you for your help,
Quecumber256
|
|
|
|
|
Actually, you can set the DataKeyNames property either in the control definition or in code, the values should be taken from the result data reader. For example:
GridView1.DataKeyNames = new string[] { "Id" };
....
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
object key = GridView1.DataKeys[e.NewEditIndex].Value;
}
|
|
|
|
|
I'm using Visual Studio.Net 2003, Asp.Net1.1.
I have a datalist bound from a database and loaded with some Names.
I want to fire an "onClick" event when I select an element from the datalist.
How can I do that from the HTML code.
Please it's very urgent.
|
|
|
|
|
Since you have been around here for 2 years, 10 months according to your profile, I'm sure you realize posts flagged as URGENT are usually ignored.
only two letters away from being an asset
|
|
|
|