Hi, I'm using a WebUserControl as my insert/edit form in a RadGrid and
when I try and get the values from the controls on the WebUserControl
they are all coming back as empty strings (in the case of a text box)
any ideas as to what I may be doing wrong? The code I'm using follows
below, any help would be appreciated; thanks!
Web Page
Web Page Code:
Web User Control Code:
Web Page
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="channeleditor.aspx.cs" Inherits="Nemo.management.ventriloservers.channeleditor" MasterPageFile="~/resources/site.master" %> | |
<asp:Content ID="Body" ContentPlaceHolderID="HtmlBody" runat="server"> | |
<div class="ControlPanelContainer"> | |
<telerik:RadAjaxPanel ID="ChannelsManagementPanel" runat="server"> | |
<p> | |
<asp:Label ID="lblServerID" runat="server" Text="Server ID:" AssociatedControlID="tbxServerID" /> | |
<telerik:RadNumericTextBox ID="tbxServerID" runat="server" NumberFormat-AllowRounding="false" NumberFormat-DecimalDigits="0" NumberFormat-GroupSizes="9" /> | |
<asp:ImageButton ID="ConnectServer" runat="server" ImageAlign="Middle" ImageUrl="~/resources/images/icons/connect.gif" OnClick="ConnectServer_Click" /> | |
<asp:ImageButton ID="DisconnectServer" runat="server" ImageAlign="Middle" ImageUrl="~/resources/images/icons/disconnect.gif" OnClick="DisconnectServer_Click" Visible="false" /> | |
</p> | |
<telerik:RadGrid ID="ChannelsList" runat="server" AutoGenerateColumns="false" Skin="Black" Width="95%" | |
OnItemDataBound="ChannelsList_ItemDataBound" OnInsertCommand="ChannelsList_InsertCommand"> | |
<MasterTableView AllowAutomaticInserts="true" AllowAutomaticDeletes="true" AllowAutomaticUpdates="true" EditMode="EditForms" | |
CommandItemDisplay="Top" HierarchyDefaultExpanded="false" DataKeyNames="ID,ParentID" FilterExpression="ParentID = Guid.Empty"> | |
<CommandItemSettings AddNewRecordImageUrl="../../resources/images/icons/channel_add.gif" AddNewRecordText="New Channel" RefreshText="" /> | |
<CommandItemStyle Font-Names="Tahoma" Font-Bold="false" Font-Size="10pt" /> | |
<HeaderStyle Font-Names="Tahoma" Font-Bold="true" Font-Size="10pt" ForeColor="Gray" /> | |
<ItemStyle Font-Names="Tahoma" Font-Bold="false" Font-Size="10pt" /> | |
<AlternatingItemStyle Font-Names="Tahoma" Font-Bold="false" Font-Size="10pt" BackColor="#3B3B3B" /> | |
<Columns> | |
<telerik:GridButtonColumn UniqueName="AddSubChannel" ButtonType="ImageButton" ImageUrl="~/resources/images/icons/add.gif" CommandName="InitInsert" CommandArgument="SubChannel"> | |
<ItemStyle Width="3%" HorizontalAlign="Center" /> | |
</telerik:GridButtonColumn> | |
<telerik:GridButtonColumn UniqueName="EditChannel" ButtonType="ImageButton" ImageUrl="~/resources/images/icons/edit.gif" CommandName="Edit"> | |
<ItemStyle Width="3%" HorizontalAlign="Center" /> | |
</telerik:GridButtonColumn> | |
<telerik:GridBoundColumn UniqueName="DisplayName" HeaderText="Display Name" DataField="Name"> | |
<ItemStyle Width="35%" /> | |
</telerik:GridBoundColumn> | |
<telerik:GridBoundColumn UniqueName="Comment" HeaderText="Comment" DataField="Comment"> | |
<ItemStyle Width="29%" /> | |
</telerik:GridBoundColumn> | |
<telerik:GridBoundColumn UniqueName="ProtectionMode" HeaderText="Protection Mode" DataField="ProtMode"> | |
<ItemStyle Width="15%" /> | |
</telerik:GridBoundColumn> | |
<telerik:GridBoundColumn UniqueName="VoiceMode" HeaderText="Voice Mode" DataField="VoiceMode"> | |
<ItemStyle Width="15%" /> | |
</telerik:GridBoundColumn> | |
</Columns> | |
<SelfHierarchySettings KeyName="ID" ParentKeyName="ParentID" /> | |
<EditFormSettings EditFormType="WebUserControl" UserControlName="~/resources/controls/newchannel.ascx"> | |
</EditFormSettings> | |
</MasterTableView> | |
</telerik:RadGrid> | |
</telerik:RadAjaxPanel> | |
</div> | |
</asp:Content> |
Web Page Code:
using System; |
using System.Collections.Generic; |
using System.Linq; |
using System.Web; |
using System.Web.UI; |
using System.Web.UI.WebControls; |
using TypeFrag.Hosting; |
using Telerik.Web.UI; |
namespace Nemo.management.ventriloservers |
{ |
public partial class channeleditor : System.Web.UI.Page |
{ |
protected List<string> protectedModes = new List<string>(); |
protected List<string> voiceModes = new List<string>(); |
protected void Page_Load(object sender, EventArgs e) |
{ |
if (!IsPostBack) |
{ |
tbxServerID.Enabled = true; |
ConnectServer.Visible = true; |
DisconnectServer.Visible = false; |
} |
protectedModes.Add(ProtectedMode.OpenToPublic.ToString()); |
protectedModes.Add(ProtectedMode.ChannelPassword.ToString()); |
protectedModes.Add(ProtectedMode.UserAuthorization.ToString()); |
voiceModes.Add(VoiceMode.Normal.ToString()); |
voiceModes.Add(VoiceMode.Queued.ToString()); |
voiceModes.Add(VoiceMode.Muted.ToString()); |
//tbxServerID.Text = "36920"; // Rick's test server |
tbxServerID.Text = "12248"; // User server with a lot of channels, DO NOT EDIT |
ConnectServer_Click(null, null); |
} |
protected void ConnectServer_Click(object sender, ImageClickEventArgs e) |
{ |
int serverID; |
if (int.TryParse(tbxServerID.Text, out serverID)) |
{ |
ControlPanelInterface cpi = new ControlPanelInterface(serverID); |
ChnFile channelsFile = cpi.GetChannels(); |
Session.Add("ChannelsFile", channelsFile); |
tbxServerID.Enabled = false; |
ConnectServer.Visible = false; |
DisconnectServer.Visible = true; |
InitializeEditor(); |
} |
} |
protected void DisconnectServer_Click(object sender, ImageClickEventArgs e) |
{ |
} |
protected void InitializeEditor() |
{ |
ChnFile channelsFile = Session["ChannelsFile"] as ChnFile; |
ChannelsList.DataSource = channelsFile.Channels; |
ChannelsList.DataBind(); |
} |
protected void ChannelsList_ItemDataBound(object sender, GridItemEventArgs e) |
{ |
if (e.Item is GridDataItem) |
{ |
GridDataItem dataItem = e.Item as GridDataItem; |
if (dataItem["ProtectionMode"].Text == ProtectedMode.OpenToPublic.ToString()) |
{ |
dataItem["ProtectionMode"].Text = "Open to Public"; |
} |
else if (dataItem["ProtectionMode"].Text == ProtectedMode.ChannelPassword.ToString()) |
{ |
dataItem["ProtectionMode"].Text = "Channel Password"; |
} |
else if (dataItem["ProtectionMode"].Text == ProtectedMode.UserAuthorization.ToString()) |
{ |
dataItem["ProtectionMode"].Text = "User Authorization"; |
} |
} |
} |
protected void ChannelsList_InsertCommand(object sender, GridCommandEventArgs e) |
{ |
GridEditableItem editedItem = e.Item as GridEditableItem; |
UserControl insertForm = (UserControl)e.Item.FindControl(GridEditFormItem.EditFormUserControlID); |
ChnFile channelsFile = Session["ChannelsFile"] as ChnFile; |
Channel newChannel = new Channel(); |
newChannel.Name = (insertForm.FindControl("tbxDisplayName") as RadTextBox).Text; |
newChannel.Phonetic = (insertForm.FindControl("tbxPhoneticName") as RadTextBox).Text; |
newChannel.Comment = (insertForm.FindControl("tbxComment") as RadTextBox).Text; |
newChannel.AllowRecording = GetBOOL((insertForm.FindControl("ckAllowRecording") as CheckBox).Checked); |
newChannel.AllowPaging = GetBOOL((insertForm.FindControl("ckAllowPaging") as CheckBox).Checked); |
newChannel.AllowTtsBinds = GetBOOL((insertForm.FindControl("ckAllowTTSBinds") as CheckBox).Checked); |
newChannel.PhantomMode = GetBOOL((insertForm.FindControl("ckAllowPhantoms") as CheckBox).Checked); |
newChannel.AllowCrossChannelXmit = GetBOOL((insertForm.FindControl("ckAllowCrossChanXmit") as CheckBox).Checked); |
newChannel.AllowWaveBinds = GetBOOL((insertForm.FindControl("ckAllowWaveBinds") as CheckBox).Checked); |
newChannel.AllowU2U = GetBOOL((insertForm.FindControl("ckAllowU2UTransmit") as CheckBox).Checked); |
newChannel.AllowGuestToJoin = GetBOOL((insertForm.FindControl("ckAllowGuests") as CheckBox).Checked); |
if ((insertForm.FindControl("tbxPassword") as RadTextBox).Text.Trim().Length > 0) |
{ |
newChannel.EncPassChan = TypeFrag.Hosting.Password.Hash((insertForm.FindControl("tbxPassword") as RadTextBox).Text); |
} |
string protectedMode = (insertForm.FindControl("cboProtectedMode") as RadComboBox).SelectedValue; |
if (protectedMode == ProtectedMode.OpenToPublic.ToString()) |
{ |
newChannel.ProtMode = ProtectedMode.OpenToPublic; |
} |
else if (protectedMode == ProtectedMode.UserAuthorization.ToString()) |
{ |
newChannel.ProtMode = ProtectedMode.UserAuthorization; |
} |
else if (protectedMode == ProtectedMode.ChannelPassword.ToString()) |
{ |
newChannel.ProtMode = ProtectedMode.ChannelPassword; |
} |
string voiceMode = (insertForm.FindControl("cboVoiceMode") as RadComboBox).SelectedValue; |
if (voiceMode == VoiceMode.Muted.ToString()) |
{ |
newChannel.VoiceMode = VoiceMode.Muted; |
} |
else if (voiceMode == VoiceMode.Normal.ToString()) |
{ |
newChannel.VoiceMode = VoiceMode.Normal; |
} |
else if (voiceMode == VoiceMode.Queued.ToString()) |
{ |
newChannel.VoiceMode = VoiceMode.Queued; |
} |
newChannel.ExemptFromInactivity = GetBOOL((insertForm.FindControl("ckIgnoreInactivity") as CheckBox).Checked); |
newChannel.DisableSoundEvts = GetBOOL((insertForm.FindControl("ckDisableSoundEvents") as CheckBox).Checked); |
newChannel.TimeLimit = int.Parse((insertForm.FindControl("tbxTransmitTimeLimit") as RadNumericTextBox).Text); |
newChannel.RankLevel = int.Parse((insertForm.FindControl("tbxTransmitRankLevel") as RadNumericTextBox).Text); |
newChannel.MaxClients = int.Parse((insertForm.FindControl("tbxMaxClients") as RadNumericTextBox).Text); |
channelsFile.Channels.Add(newChannel); |
Session["ChannelsFile"] = channelsFile; |
ChannelsList.DataSource = channelsFile.Channels; |
ChannelsList.DataBind(); |
} |
private bool GetBoolean(BOOL b) |
{ |
if (b.ToString() == "TRUE" || b.ToString() == "1") |
{ |
return true; |
} |
else |
{ |
return false; |
} |
} |
private BOOL GetBOOL(bool b) |
{ |
if (b) |
{ |
return BOOL.TRUE; |
} |
else |
{ |
return BOOL.FALSE; |
} |
} |
} |
} |
Web User Control Code:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="newchannel.ascx.cs" Inherits="Nemo.resources.controls.newventrilouser" %> |
<table width="520px" style="font-family:Tahoma;font-size:10pt;font-weight:normal;border-collapse:collapse;" rules="none"> |
<tr class="EditFormHeader"> |
<td colspan="5">Create New Channel</td> |
</tr> |
<tr> |
<td align="right" style="width:40%;"><asp:Label ID="lblDisplayName" AssociatedControlID="tbxDisplayName" Text="Display Name:" runat="server" /></td> |
<td colspan="4" style="width:60%;"> |
<telerik:RadTextBox ID="tbxDisplayName" runat="server" Skin="Gray" MaxLength="255" Width="200px" /> |
</td> |
</tr> |
<tr> |
<td align="right" style="width:40%;"><asp:Label ID="lblPhoneticName" AssociatedControlID="tbxPhoneticName" Text="Phonetic Name:" runat="server" /></td> |
<td colspan="4" style="width:60%;"> |
<telerik:RadTextBox ID="tbxPhoneticName" runat="server" Skin="Gray" MaxLength="255" Width="200px" /> |
</td> |
</tr> |
<tr> |
<td align="right" style="width:40%;"><asp:Label ID="lblComment" AssociatedControlID="tbxComment" Text="Comment:" runat="server" /></td> |
<td colspan="4" style="width:60%;"> |
<telerik:RadTextBox ID="tbxComment" runat="server" Skin="Gray" MaxLength="255" Width="200px" /> |
</td> |
</tr> |
<tr> |
<td align="right" style="width:40%;"><asp:Label ID="lblPassword" AssociatedControlID="tbxPassword" Text="Channel Password:" runat="server" /></td> |
<td colspan="4" style="width:60%;"> |
<telerik:RadTextBox ID="tbxPassword" runat="server" Skin="Gray" MaxLength="255" Width="200px" TextMode="Password" /> |
</td> |
</tr> |
<tr> |
<td style="width:40%;"></td> |
<td align="left" colspan="2" style="width:30%;font-size:8pt;"> |
<asp:CheckBox ID="ckAllowRecording" Text="Allow Recording" runat="server" /> |
</td> |
<td align="left" colspan="2" style="width:30%;font-size:8pt;"> |
<asp:CheckBox ID="ckAllowCrossChanXmit" Text="Allow Cross-Chan Transmit" runat="server" /> |
</td> |
</tr> |
<tr> |
<td style="width:40%;"></td> |
<td align="left" colspan="2" style="width:30%;font-size:8pt;"> |
<asp:CheckBox ID="ckAllowPaging" Text="Allow Paging" runat="server" /> |
</td> |
<td align="left" colspan="2" style="width:30%;font-size:8pt;"> |
<asp:CheckBox ID="ckAllowWaveBinds" Text="Allow Wave File Bind" runat="server" /> |
</td> |
</tr> |
<tr> |
<td style="width:40%;"></td> |
<td align="left" colspan="2" style="width:30%;font-size:8pt;"> |
<asp:CheckBox ID="ckAllowTTSBinds" Text="Allow TTS Binds" runat="server" /> |
</td> |
<td align="left" colspan="2" style="width:30%;font-size:8pt;"> |
<asp:CheckBox ID="ckAllowU2UTransmit" Text="Allow U2U Transmit" runat="server" /> |
</td> |
</tr> |
<tr> |
<td style="width:40%;"></td> |
<td align="left" colspan="2" style="width:30%;font-size:8pt;"> |
<asp:CheckBox ID="ckAllowPhantoms" Text="Allow Phantoms" runat="server" /> |
</td> |
<td align="left" colspan="2" style="width:30%;font-size:8pt;"> |
<asp:CheckBox ID="ckAllowGuests" Text="Allow Guest Accounts" runat="server" /> |
</td> |
</tr> |
<tr> |
<td style="width:40%;"></td> |
<td align="left" colspan="2" style="width:30%;font-size:8pt;"> |
<asp:CheckBox ID="ckAllowVoiceTargets" Text="Allow Voice Targets" runat="server" /> |
</td> |
<td align="left" colspan="2" style="width:30%;font-size:8pt;"> |
<asp:CheckBox ID="ckAllowCommandingTargets" Text="Allow Cmding Targets" runat="server" /> |
</td> |
</tr> |
<tr> |
<td align="right" style="width:40%;"> |
<asp:Label ID="lblProtectedMode" Text="Protected Mode:" runat="server" /> |
</td> |
<td colspan="4" style="width:60%;"> |
<telerik:RadComboBox ID="cboProtectedMode" runat="server" Skin="Gray" Width="200px"> |
<Items> |
<telerik:RadComboBoxItem Text="Open to Public" Value="OpenToPublic" /> |
<telerik:RadComboBoxItem Text="Channel Password" Value="ChannelPassword" /> |
<telerik:RadComboBoxItem Text="User Authorization" Value="UserAuth" /> |
</Items> |
</telerik:RadComboBox> |
</td> |
</tr> |
<tr> |
<td align="right" style="width:40%;"> |
<asp:Label ID="lblVoiceMode" Text="Voice Mode:" runat="server" /> |
</td> |
<td colspan="4" style="width:60%;"> |
<telerik:RadComboBox ID="cboVoiceMode" runat="server" Skin="Gray" Width="200px"> |
<Items> |
<telerik:RadComboBoxItem Text="Normal" Value="Normal" /> |
<telerik:RadComboBoxItem Text="Queued" Value="Queued" /> |
<telerik:RadComboBoxItem Text="Muted" Value="Muted" /> |
</Items> |
</telerik:RadComboBox> |
</td> |
</tr> |
<tr> |
<td align="right" style="width:40%;"> |
<asp:Label ID="lblChannelCodec" Text="Channel Codec/Format:" runat="server" /> |
</td> |
<td colspan="4" style="width:60%;"> |
<telerik:RadComboBox ID="cboChannelCodec" runat="server" Skin="Gray" Width="200px"> |
</telerik:RadComboBox> |
</td> |
</tr> |
<tr> |
<td colspan="2" style="width:50%;"> |
<asp:CheckBox ID="ckIgnoreInactivity" Text="Exempt from Inactivity Timers" runat="server" /> |
</td> |
<td colspan="3" align="right" style="width:50%;"> |
<asp:Label ID="lblTransmitTimeLimit" Text="Transmit Time Limit:" runat="server" /> |
<telerik:RadNumericTextBox ID="tbxTransmitTimeLimit" Skin="Gray" NumberFormat-AllowRounding="false" NumberFormat-DecimalDigits="0" runat="server" Width="25px" /> |
</td> |
</tr> |
<tr> |
<td colspan="2" style="width:50%;"> |
<asp:CheckBox ID="ckDisableGuestXmit" Text="Disable Guest Account Transmit" runat="server" /> |
</td> |
<td colspan="3" align="right" style="width:50%;"> |
<asp:Label ID="lblTransmitRankLevel" Text="Transmit Rank Level (0-100):" runat="server" /> |
<telerik:RadNumericTextBox ID="tbxTransmitRankLevel" Skin="Gray" NumberFormat-AllowRounding="false" NumberFormat-DecimalDigits="0" MaxValue="100" runat="server" Width="25px" /> |
</td> |
</tr> |
<tr> |
<td colspan="2" style="width:50%;"> |
<asp:CheckBox ID="ckDisableSoundEvents" Text="Disable Sound Events" runat="server" /> |
</td> |
<td colspan="3" align="right" style="width:50%;"> |
<asp:Label ID="lblMaxClients" Text="Max Clients:" runat="server" /> |
<telerik:RadNumericTextBox ID="tbxMaxClients" Skin="Gray" NumberFormat-AllowRounding="false" NumberFormat-DecimalDigits="0" runat="server" Width="25px" /> |
</td> |
</tr> |
<tr> |
<td colspan="3" style="padding-top:15px;"></td> |
<td align="right" style="padding-top:15px;"> |
<asp:LinkButton ID="btnInsert" Text="Create" runat="server" CommandName="PerformInsert" /> |
</td> |
<td align="right" style="padding-top:15px;"> |
<asp:LinkButton ID="btnCancel" Text="Cancel" runat="server" CommandName="Cancel" CausesValidation="false" /> |
</td> |
</tr> |
</table> |