

| <form id="form1" runat="server"> |
| <asp:ScriptManager ID="ScriptManager1" runat="server"> |
| </asp:ScriptManager> |
| <div> |
| <asp:AccessDataSource ID="adsCategories" runat="server" |
| DataFile="~/App_Data/dbmx.mdb" |
| SelectCommand="SELECT * FROM [Categories] where isDelete = False"></asp:AccessDataSource> |
| <asp:AccessDataSource ID="adsProducts" runat="server" |
| DataFile="~/App_Data/dbmx.mdb" |
| SelectCommand="SELECT * FROM [Products] where isDelete = False"></asp:AccessDataSource> |
| <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> |
| <AjaxSettings> |
| <telerik:AjaxSetting AjaxControlID="RadGrid1"> |
| <UpdatedControls> |
| <telerik:AjaxUpdatedControl ControlID="RadGrid1" /> |
| </UpdatedControls> |
| </telerik:AjaxSetting> |
| </AjaxSettings> |
| </telerik:RadAjaxManager> |
| <telerik:RadGrid ID="RadGrid1" runat="server" DataSourceID="adsCategories" |
| GridLines="None" AllowFilteringByColumn="True" AllowPaging="True" |
| AutoGenerateEditColumn="True" Skin="Office2007"> |
| <MasterTableView DataKeyNames="categoryID,categoryParentID" HierarchyLoadMode="Client" DataSourceID="adsCategories" HierarchyDefaultExpanded="False"> |
| <SelfHierarchySettings KeyName="categoryID" ParentKeyName="categoryParentID" /> |
| <RowIndicatorColumn> |
| <HeaderStyle Width="20px"></HeaderStyle> |
| </RowIndicatorColumn> |
| <ExpandCollapseColumn> |
| <HeaderStyle Width="20px"></HeaderStyle> |
| </ExpandCollapseColumn> |
| </MasterTableView> |
| <ClientSettings> |
| <Scrolling AllowScroll="True" UseStaticHeaders="True" /> |
| </ClientSettings> |
| </telerik:RadGrid> |
| </div> |
| </form> |
| Protected Sub RadGrid1_ColumnCreated(ByVal sender As Object, ByVal e As GridColumnCreatedEventArgs) Handles RadGrid1.ColumnCreated |
| If TypeOf e.Column Is GridExpandColumn Then |
| e.Column.Visible = False |
| ElseIf TypeOf e.Column Is GridBoundColumn Then |
| e.Column.HeaderStyle.Width = Unit.Pixel(100) |
| End If |
| End Sub |
| Public Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load |
| If Assembly.GetAssembly(GetType(ScriptManager)).FullName.IndexOf("3.5") <> -1 Then |
| RadGrid1.MasterTableView.FilterExpression = "it[""categoryParentID""] = Convert.DBNull" |
| Else |
| RadGrid1.MasterTableView.FilterExpression = "categoryParentID IS NULL" |
| End If |
| End Sub |
| Public Sub Page_PreRenderComplete(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.PreRenderComplete |
| HideExpandColumnRecursive(RadGrid1.MasterTableView) |
| End Sub |
| Public Sub HideExpandColumnRecursive(ByVal tableView As GridTableView) |
| Dim nestedViewItems As GridItem() = tableView.GetItems(GridItemType.NestedView) |
| For Each nestedViewItem As GridNestedViewItem In nestedViewItems |
| For Each nestedView As GridTableView In nestedViewItem.NestedTableViews |
| nestedView.Style("border") = "1" |
| Dim MyExpandCollapseButton As Button = DirectCast(nestedView.ParentItem.FindControl("MyExpandCollapseButton"), Button) |
| If nestedView.Items.Count = 0 Then |
| If Not MyExpandCollapseButton Is Nothing Then |
| MyExpandCollapseButton.Style("visibility") = "hidden" |
| End If |
| nestedViewItem.Visible = False |
| Else |
| If Not MyExpandCollapseButton Is Nothing Then |
| MyExpandCollapseButton.Style.Remove("visibility") |
| End If |
| End If |
| If nestedView.HasDetailTables Then |
| HideExpandColumnRecursive(nestedView) |
| End If |
| Next |
| Next |
| End Sub |
| Protected Sub RadGrid1_ItemCreated(ByVal sender As Object, ByVal e As GridItemEventArgs) Handles RadGrid1.ItemCreated |
| CreateExpandCollapseButton(e.Item, "categoryID") |
| If TypeOf e.Item Is GridHeaderItem AndAlso Not e.Item.OwnerTableView Is RadGrid1.MasterTableView Then |
| e.Item.Style("display") = "none" |
| End If |
| If TypeOf e.Item Is GridNestedViewItem Then |
| e.Item.Cells(0).Visible = False |
| End If |
| End Sub |
| Protected Sub RadGrid1_ItemDataBound(ByVal sender As Object, ByVal e As GridItemEventArgs) Handles RadGrid1.ItemDataBound |
| CreateExpandCollapseButton(e.Item, "categoryID") |
| End Sub |
| Public Sub CreateExpandCollapseButton(ByVal item As GridItem, ByVal columnUniqueName As String) |
| If TypeOf item Is GridDataItem Then |
| If item.FindControl("MyExpandCollapseButton") Is Nothing Then |
| Dim button As New Button() |
| AddHandler button.Click, AddressOf button_Click |
| button.CommandName = "ExpandCollapse" |
| button.CssClass = IIf((item.Expanded), "rgCollapse", "rgExpand") |
| button.ID = "MyExpandCollapseButton" |
| If item.OwnerTableView.HierarchyLoadMode = GridChildLoadMode.Client Then |
| Dim script As String = [String].Format("$find(""{0}"")._toggleExpand(this, event); return false;", item.Parent.Parent.ClientID) |
| button.OnClientClick = script |
| End If |
| Dim level As Integer = item.ItemIndexHierarchical.Split(":"c).Length |
| If level > 1 Then |
| button.Style("margin-left") = level + 10 & "px" |
| End If |
| Dim cell As TableCell = (DirectCast(item, GridDataItem))(columnUniqueName) |
| cell.Controls.Add(button) |
| cell.Controls.Add(New LiteralControl(" ")) |
| cell.Controls.Add(New LiteralControl((DirectCast(item, GridDataItem)).GetDataKeyValue(columnUniqueName).ToString())) |
| End If |
| End If |
| End Sub |
| Sub button_Click(ByVal sender As Object, ByVal e As EventArgs) |
| CType(sender, Button).CssClass = IIf((CType(sender, Button).CssClass = "rgExpand"), "rgCollapse", "rgExpand") |
| End Sub |
The actual tool I am testing this on has 2 table views inside a rad grid.
On the last level I added an upload file feature. But when the click event happens the RadUpload no longer has a file. Even though I selected a file.
Here is what the aspx code looks like:
<telerik:RadGrid ID="RadGrid1" ShowStatusBar="true" DataSourceID="ObjectDataSource1" runat="server"
AutoGenerateColumns="False" PageSize="7" AllowSorting="True" AllowMultiRowSelection="False"
AllowPaging="True" GridLines="None">
<PagerStyle Mode="NumericPages"></PagerStyle>
<MasterTableView DataSourceID="ObjectDataSource1"
DataKeyNames="PONumber" AllowMultiColumnSorting="True">
<DetailTables>
<telerik:GridTableView DataKeyNames="PurchaseOrderItemId" AutoPostBack="True" AllowAutomaticUpdates="true"
EditMode="InPlace" DataSourceID="ObjectDataSource2" Width="100%" runat="server">
<ParentTableRelation>
<telerik:GridRelationFields DetailKeyField="PONumber" MasterKeyField="PONumber" />
</ParentTableRelation>
<DetailTables>
<Columns>
<
telerik:GridBoundColumn SortExpression="DocumentTypeName" HeaderText="Document Type Name"
HeaderButtonType="TextButton" DataField="DocumentTypeName" UniqueName="DocumentTypeName">
</telerik:GridBoundColumn>
<telerik:GridTemplateColumn UniqueName="DocumentFileName" HeaderText="File Name"
DataField="DocumentFileName">
<ItemTemplate>
<asp:HyperLink ID="hlFile" runat="server" Target="_blank" Text='<%# Bind("DocumentFileName") %>' />
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn UniqueName="ReplaceFileName" HeaderText="Replace File"
DataField="ReplaceFileName">
<ItemTemplate>
<telerik:RadUpload ID="FileUpload1" runat="server" MaxFileInputsCount="1" InitialFileInputsCount="1"
ControlObjectsVisibility="None" />
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn HeaderText="Save" HeaderButtonType="TextButton" UniqueName="Save">
<ItemTemplate>
<asp:Button ID="btnSave" runat="server" Text="Save" Width="80" ToolTip="Click here to save the new file."
OnClick="btnSave_Click" UseSubmitBehavior="False" />
</ItemTemplate>
</telerik:GridTemplateColumn>
</
Columns>
</telerik:GridTableView>
</DetailTables>
<Columns>
<telerik:GridBoundColumn SortExpression="PONumber" HeaderText="PO Number" HeaderButtonType="TextButton"
DataField="PONumber" UniqueName="PONumber">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="CompanyName" HeaderText="Company Name" HeaderButtonType="TextButton"
DataField="CompanyName" UniqueName="CompanyName">
</telerik:GridBoundColumn>
</Columns>
</MasterTableView>
<ClientSettings>
<Selecting AllowRowSelect="true" />
</ClientSettings>
</telerik:RadGrid>
Here is the save function in cs:
protected
void btnSave_Click(object sender, EventArgs e)
{
GridDataItem item = (GridDataItem)((Button)sender).Parent.Parent;
//PO Number works fine.
int iPONumber = item.OwnerTableView.DataKeyValues[item.ItemIndex]["PONumber"] == DBNull.Value ? 0 : Convert.ToInt32(item.OwnerTableView.DataKeyValues[item.ItemIndex]["PONumber"]);
string sDocumentTypeName = item.OwnerTableView.DataKeyValues[item.ItemIndex]["DocumentTypeName"].ToString();
string sFileName = item.OwnerTableView.DataKeyValues[item.ItemIndex]["DocumentFileName"].ToString();
//This code finds the RadUpload but it no longer has the attached files when the Save button is clicked.
RadUpload RadUpload1 = item.FindControl("FileUpload1") as RadUpload;
//This should have a count value of 1 for the 1 file I added.
if (RadUpload1.UploadedFiles.Count == 0)
{
// skips out if there are no files
return;
}
//process the file if one exists.
}
| .rtbText { font: normal 11px verdana, sans-serif !important; color: #333333 !important; } |