How to use CausesValidation on an ext.net button? - ext.net

This question is about ext.net.
I hope to perform a form validation when the save button is clicked. In a regular ASP.NET webform, we usually use CausesValidation="true" ValidationGroup="gpSubmit" on the save button. But in an ext.net button, those two properties seems to be ineffective.
Any advice? How do you focus on the DOM control that fails the validation?
Here is my code.
<ext:Button ID="btnSave" runat="server" Text="Save" Icon="ApplicationEdit"
CausesValidation="true" ValidationGroup="gpSubmit">
<DirectEvents>
<Click
OnEvent="btnSave_Click"
Before="...;"
Success="...;"
Failure="...;">
<EventMask ShowMask="true" Msg="Processing" />
</Click>
</DirectEvents>
</ext:Button>

Related

How to make ext.net RadioGroup a required field?

We are using ext.net. I know how to make a textbox a required field, but am having trouble to force our user to make a selection on the radio group or a check box group. I know someone just assign a default value to one of the radio button, but our customer wants to leave them unchecked in the beginning but forces the web users to make a choice, which is understandable.
It appears IndicatorText and AllowBlank properties are not effective even though they are listed in the IntelliSense.
<ext:RadioGroup ID="rdGrpGender" runat="server"
ItemCls="x-check-group-base" FieldLabel="Gender"
ColumnsWidths="60,60"
IndicatorText="*" IndicatorCls="cssIndicator" AllowBlank="false">
<Items>
<ext:Radio ID="rdoMale" runat="server" BoxLabel="M" />
<ext:Radio ID="rdoFemale" runat="server" BoxLabel="F" />
</Items>
</ext:RadioGroup>
Can any expert help me out? Thanks a lot.
you can validate it like this
<ext:Button ID="Button1" runat="server" Text="Validate"><Listeners><Click Handler="#{rdGrpGender}.validate();" /></Listeners></ext:Button>

Ext.net 2.0 ComboBox, tiny bug

I have a very tricky issue which bothered me really long..
I was trying to use Ext.net 2.0 combobox to display options from remote DB. Everything works fine, but there is only one issue, when the page first loaded, if I do not change a selection of the combo, in c#, the combobox.value equals to the text instead of id.
Database is very easy: 'Test_table' has two columns, one called Tid, the other is TextContent.
My frontend code:
<ext:ComboBox ID="TestCombo" runat="server" Editable="false" DisplayField="TextContent"
ValueField="Tid" TypeAhead="true" AllowBlank="false" EmptyText="Select a text
id..." SelectOnFocus="true" FieldLabel="test text">
<Store>
<ext:Store ID="TestStore" runat="server" AutoLoad="true" AutoDataBind="true"
OnReadData="testStore_RefreshData">
<Proxy>
<ext:PageProxy>
</ext:PageProxy>
</Proxy>
<Model>
<ext:Model ID="Model1" runat="server" IDProperty="Tid">
<Fields>
<ext:ModelField Name="Tid" />
<ext:ModelField Name="TextContent" />
</Fields>
</ext:Model>
</Model>
</ext:Store>
</Store>
</ext:ComboBox>
After click a save button, I try to add breakpoint to get var _M = TestCombo.value However, it appears that if I click save after I changed the selection of the combobox, _M's value will be correct(equals to Tid value), otherwise, _M's value will be the TextContent..
Anyone has idea what caused this issue? Or does anyone have some good samples for Ext.net 2.0+ combobox code (read from remote db)?

How to open a modal aspx page from the devexpress aspxpopupcontrol

I have a button which should open a web form from my project in a modal window. How can I achieve that with the devexpress popup control?
Use the Popup Control - Content URL to show another webform in the control. open popup on the button's client click event.
example:
<dx:ASPxPopupControl ID="popup" runat="server" ContentUrl="~/ContentPageWithTextBox.aspx"
Top="100" ClientInstanceName="clientPopup" CloseAction="CloseButton">
<ClientSideEvents Shown="OnShown" />
</dx:ASPxPopupControl>
Check this search Result
Reference:
How to manipulate client-side objects within a ASPxPopupControl with the specified ContentUrl - check example also.
Hope this help...
Here is sample code:
<input id="openBtn" type="button" value="Open popup"
onclick="myPopup.SetContentUrl('http://www.google.com');myPopup.Show();" />
<dx:ASPxPopupControl runat="server" ClientInstanceName="myPopup" Modal="True"
CloseAction="CloseButton" Width="500px" Height="400px"/>
ASPxClientPopupControl members
ASPxPopupControl members
See ASPxPopupControl Online Demos and the Code Central Examples to learn more on how accomplish this task.

User control incorrectly displaying in modalpopup extender

I'm placing a user control inside a modal popup. The problem is that it is getting displayed even before the popup is being invoked. If I replace the user control with anything else, it is hidden correctly. The moment I put back in the user control, I get the same issue.
Here is my code:
<asp:Panel ID="plSearch" runat="server" CssClass="modalPopup" Width="365">
<uc1:Search ID="searchSponsor" runat="server" Mode="ReturnID" />
<asp:Button ID="SearchCancel" runat="server" Text="Cancel" CausesValidation="False" />
<asp:UpdatePanel ID="upSearch" runat="server">
<ContentTemplate>
<asp:Label ID="lblSponsor" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
</asp:Panel>
<asp:ModalPopupExtender ID="mpeSearch" runat="server" TargetControlID="lbSearch"
PopupControlID="plSearch" BackgroundCssClass="modalBackground" DropShadow="False"
Enabled="True" CancelControlID="SearchCancel" />
When I moved the linkbutton that was named as the modalpopup's TargetControlID to immediately above the mpe, it displayed correctly.

Exporting Gridview to Excel in web app

Hopefully you guys can help me out. I tried a lot of different things and cant get this working.
I have a gridview as below in a update panel:
<asp:UpdatePanel ID="udpReport" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
<ContentTemplate>
<asp:GridView runat="server" ID="preferenceReportGrd" AutoGenerateColumns="false"
AutoGenerateSelectButton="false" CaptionAlign="Top" EnableSortingAndPagingCallbacks="false" HorizontalAlign="left" CssSelectorClass="gvwPrefReport">
<Columns>
<asp:BoundField ReadOnly="true" DataField="ClientName" HeaderText="Company Name" />
<asp:BoundField ReadOnly="true" DataField="typeDescription" HeaderText="Preference" />
<asp:BoundField ReadOnly="true" DataField="defaultValue" HeaderText="Default Preference" />
<asp:BoundField ReadOnly="true" DataField="previousPreferenceValue" HeaderText="Previous Preference" />
<asp:BoundField ReadOnly="true" DataField="selectedValue" HeaderText="New Preference" />
<asp:BoundField ReadOnly="true" DataField="lastUpdated" HeaderText="Date Last Edited" />
</Columns>
</asp:GridView>
<div>
<user:MsgLine runat="server" ID="MsgLine1" />
</div>
</ContentTemplate>
</asp:UpdatePanel>
I am trying to export this gridview out to excel. There is a button which the user clicks on it calls the on_click method for that button and in this on_click i have the following:
string attachment = "attachment; filename=Employee.xls";
Response.AddHeader("content-disposition", attachment);
Response.ContentType = "application/excel";
StringWriter stw = new StringWriter();
HtmlTextWriter htextw = new HtmlTextWriter(stw);
preferenceReportGrd.RenderControl(htextw);
Response.Write(stw.ToString());
Response.End();
I get nothing from this tried debugging it seems that when i mouse over stw.tostring() all the values for the gridview are there but nothing gets written out.
Yes. within the update panel tag excel export is not working. I face the same problem.
To solve this use the following code in end of the update panel tag
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="BtnExport" />
</Triggers>
</asp:UpdatePanel>
it works even within the update panel also
If the GridView and/or the button is within in update panel with an async postback, I do not believe you can change the response headers or information. Try running it again with a full postback on the button trigger and see what happens. Your code did not look incorrect, but I've not tried it...
Take a look at this samples...
1. c-sharpcorner
2. Matt Berseth
3. Code Project
Check your content types and for a PostBackTrigger on the exporting button.
For Excel 2003
Response.ContentType = "application/vnd.ms-excel
For Excel 2007
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
You can check out this blog post for the source of my content types.
EDIT: From your comments:
You need to set a PostBackTrigger on the panel that contains the button doing the export, not the panel that contains the GridView.
EDIT EDIT: Your file-is-not-what-it-says-it-is error is due to a feature called Extension Hardening, present in Excel 2007. Check this StackOverflow question for more info; I linked to a blog post describing the reasoning for this error and a possible workaround.
The way I was able to work around this in a simple page that I was working on was to have a hidden gridview outside of the updatepanel and set it equal to the gridview in the update panel so that they are the same (except for the new one being hidden). Then export this hidden grid to Excel the same way that you were doing it before.
One issue with doing it this way is that the export hyperlink needs to be outside of the update panel as well which means that you might not be able to put the export hyperlink where you want it.
Granted this is probably not the best way to do it, it got me around this issue at the time. Hope it helps.

Resources