|
OriginalGriff wrote: Why on earth would you want to do that?
crazy Manager .
OriginalGriff wrote: it is going to look pretty silly.
You have a humorous way of making the point . I like it .
OriginalGriff wrote: It would be a lot quicker, and cheaper, to buy a mac instead.
You are extreamly funny.
Thanks anyway. A five for this message.Wamuti: Any man can be an island, but islands to need water around them!
Edmund Burke: No one could make a greater mistake than he who did nothing because he could do only a little.
|
|
|
|
|
CocoaSharp[^] might also be an interesting option I are Troll
|
|
|
|
|
<%@ Page Language="c#" Inherits="Telerik.ListViewExamplesCSharp.FirstLook.DefaultCS"
CodeFile="DefaultCS.aspx.cs" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.QuickStart" %>
<%@ Register TagPrefix="qsf" Namespace="Telerik.QuickStart" %>
<%@ Register TagPrefix="telerik" TagName="Header" Src="~/Common/Header.ascx" %>
<%@ Register TagPrefix="telerik" TagName="HeadTag" Src="~/Common/HeadTag.ascx" %>
<%@ Register TagPrefix="telerik" TagName="Footer" Src="~/Common/Footer.ascx" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<telerik:HeadTag runat="server" ID="Headtag2" />
<style type="text/css">
.rdpWrap .RadInput, .rdpWrap .rdpPagerButton, .rdpWrap .rdpPagerLabel
{
float: left;
}
</style>
</head>
<body class="BODY">
<form runat="server" id="mainForm" method="post">
<div>
<telerik:Header runat="server" ID="Header1" NavigationLanguage="CS" ShowSkinChooser="false"
ShowDbResetTimer="true" />
<!-- content start -->
<telerik:RadScriptManager ID="RadScriptManager1" runat="server" />
<telerik:RadFormDecorator ID="RadFormDecorator1" runat="server" />
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="RadListView1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="RadListView1" LoadingPanelID="RadAjaxLoadingPanel1" />
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="RadListView2">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="RadListView2" />
<telerik:AjaxUpdatedControl ControlID="lblDescription" LoadingPanelID="RadAjaxLoadingPanel1" />
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="ddListSort">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="RadListView1" LoadingPanelID="RadAjaxLoadingPanel1" />
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="rblSort">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="rblSort" UpdatePanelRenderMode="Inline" />
<telerik:AjaxUpdatedControl ControlID="RadListView1" LoadingPanelID="RadAjaxLoadingPanel1" />
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="CheckBoxList1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="CheckBoxList1" />
<telerik:AjaxUpdatedControl ControlID="RadListView1" LoadingPanelID="RadAjaxLoadingPanel1" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
<ClientEvents OnRequestStart="RequestStart" />
</telerik:RadAjaxManager>
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" />
<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
<script type="text/javascript">
function RequestStart(sender, eventArgs) {
//disable ajax on update/insert operation to upload the image
if ((eventArgs.get_eventTarget().indexOf("Update") > -1) || (eventArgs.get_eventTarget().indexOf("PerformInsert") > -1)) {
eventArgs.set_enableAjax(false);
}
}
</script>
</telerik:RadCodeBlock>
<qsf:ConfiguratorPanel runat="server" ID="ConfigurationPanel1" Title="Configurator"
Expanded="false">
Use check boxes bellow to customize the RadDataPager control
<asp:CheckBoxList runat="server" ID="CheckBoxList1" AutoPostBack="true" RepeatColumns="2"
RepeatDirection="Vertical" OnSelectedIndexChanged="CheckBoxList1_SelectedIndexChanged"
RepeatLayout="Table" CellSpacing="10">
<asp:ListItem Value="1" Text="FirstPrev button fields" Selected="True"></asp:ListItem>
<asp:ListItem Value="2" Text="Numeric button fields" Selected="True"></asp:ListItem>
<asp:ListItem Value="3" Text="NextLast button fields" Selected="True"></asp:ListItem>
<asp:ListItem Value="4" Text="Page size field" Selected="True"></asp:ListItem>
<asp:ListItem Value="5" Text="Go-to-page field" Selected="True"></asp:ListItem>
<asp:ListItem Value="6" Text="Template field" Selected="True"></asp:ListItem>
</asp:CheckBoxList>
</qsf:ConfiguratorPanel>
<table>
<tr>
<td>
<h3 class="qsfSubtitle">
Editable RadListView with tiled layout</h3>
<telerik:RadListView ID="RadListView1" DataSourceID="SqlDataSource1" runat="server"
ItemPlaceholderID="CustomersContainer" DataKeyNames="CustomerID" AllowPaging="true"
OnItemCommand="RadListView1_ItemCommand">
<LayoutTemplate>
<!-- Set the id of the wrapping container to match the CLIENT ID of the RadListView control to display the ajax loading panel
In case the listview is embedded in another server control, you will need to append the id of that server control -->
<fieldset id="RadListView1">
<legend>Customers</legend>
<table cellpadding="0" cellspacing="0" width="100%">
<tr>
<td>
<telerik:RadDataPager ID="RadDataPager1" runat="server" PagedControlID="RadListView1"
PageSize="2" Width="780px">
<Fields>
<telerik:RadDataPagerButtonField FieldType="FirstPrev" />
<telerik:RadDataPagerButtonField FieldType="Numeric" PageButtonCount="6" />
<telerik:RadDataPagerButtonField FieldType="NextLast" />
<telerik:RadDataPagerPageSizeField PageSizeText="Page size: " />
<telerik:RadDataPagerGoToPageField CurrentPageText="Page: " TotalPageText="of" SubmitButtonText="Go"
TextBoxWidth="15" />
<telerik:RadDataPagerTemplatePageField>
<PagerTemplate>
<div style="float: right; padding-left: 50px;">
<b>Items
<asp:Label runat="server" ID="CurrentPageLabel" Text="<%# (Container.Owner.TotalRowCount > 0)? Container.Owner.StartRowIndex + 1 : 0%>" />
to
<asp:Label runat="server" ID="TotalPagesLabel" Text="<%# (Container.Owner.TotalRowCount > 0)? Container.Owner.StartRowIndex + Container.Owner.PageSize : 0 %>" />
of
<asp:Label runat="server" ID="TotalItemsLabel" Text="<%# Container.Owner.TotalRowCount%>" />
<br />
</b>
</div>
</PagerTemplate>
</telerik:RadDataPagerTemplatePageField>
</Fields>
</telerik:RadDataPager>
</td>
</tr>
</table>
<asp:PlaceHolder ID="CustomersContainer" runat="server" />
<div style="clear: both" />
<br />
<br />
<table style="width: 100%;">
<tr>
<td style="width: 25%;">
<asp:Button ID="btnInitInsert" runat="server" Text="Insert Customer" OnClick="btnInitInsert_Click" />
</td>
<td style="text-align: right; width: 75%;">
<asp:Label ID="lblSort1" runat="server" Text="Sort by:" Style="padding-right: 5px;" />
<telerik:RadComboBox ID="ddListSort" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddListSort_SelectedIndexChanged">
<Items>
<telerik:RadComboBoxItem Text="-Select field to sort-" Value="" />
<telerik:RadComboBoxItem Text="Company name" Value="CompanyName" />
<telerik:RadComboBoxItem Text="Contact name" Value="ContactName" />
<telerik:RadComboBoxItem Text="Title" Value="ContactTitle" />
<telerik:RadComboBoxItem Text="City" Value="City" />
<telerik:RadComboBoxItem Text="Country" Value="Country" />
<telerik:RadComboBoxItem Text="Clear sort" Value="ClearSort" />
</Items>
</telerik:RadComboBox>
<asp:RadioButtonList RepeatLayout="Flow" RepeatDirection="Horizontal" ID="rblSort"
runat="server" AutoPostBack="true" OnSelectedIndexChanged="rblSort_SelectedIndexChanged">
<asp:ListItem Text="Ascending" Value="ASC" Selected="True" />
<asp:ListItem Text="Descending" Value="DESC" />
</asp:RadioButtonList>
</td>
</tr>
</table>
</fieldset>
</LayoutTemplate>
<ItemTemplate>
<!--The widths/heights of the fieldset/outer tables in the item/edit/insert templates should match to avoid wrapping or visual discrepancies
in the tiles layout-->
<fieldset style="float: left; width: 370px; height: 185px;">
<legend>Company name:
<%# Eval("CompanyName") %></legend>
<table cellpadding="0" cellspacing="0" style="height: 100%;" width="370px">
<tr>
<td>
<table cellpadding="0" cellspacing="0">
<tr>
<td>
<table cellpadding="0" cellspacing="0">
<tr>
<td style="width: 25%">
Name:
</td>
<td style="width: 50%">
<%#Eval("ContactName")%>
</td>
</tr>
<tr>
<td>
Title:
</td>
<td>
<%#Eval("ContactTitle")%>
</td>
</tr>
<tr>
<td>
City:
</td>
<td>
<%# Eval("City")%>
</td>
</tr>
<tr>
<td>
Country:
</td>
<td>
<%# Eval("Country")%>
</td>
</tr>
<tr>
<td>
Phone:
</td>
<td>
<%#Eval("Phone")%>
</td>
</tr>
</table>
</td>
<td align="right" style="width: 30%; padding-left: 10px;">
<telerik:RadBinaryImage ID="RadBinaryImage1" runat="server" AlternateText="Contact Photo"
ToolTip="Contact Photo" Width="90px" Height="110px" ResizeMode="Fit" DataValue='<%# Eval("Photo") %>' />
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table style="width: 100%;">
<tr>
<td>
<asp:Button ID="btnEdit" runat="server" Text="Edit" CommandName="Edit" Width="50px" />
</td>
<td style="text-align: right">
<asp:Button ID="btnDelete" runat="server" Text="Delete" CommandName="Delete" Width="50px" />
</td>
</tr>
</table>
</td>
</tr>
</table>
</fieldset>
</ItemTemplate>
<EditItemTemplate>
<!--The widths/heights of the fieldset/outer tables in the item/edit/insert templates should match to avoid wrapping or visual discrepancies
in the tiles layout-->
<fieldset style="float: left; width: 370px; height: 185px;">
<legend>Company name:
<asp:TextBox ID="txtBoxCompanyName" runat="server" Text='<%#Bind("CompanyName")%>' />
<asp:RequiredFieldValidator ID="rvCompanyName" runat="server" ControlToValidate="txtBoxCompanyName"
ErrorMessage="Please enter company name" Display="Dynamic" />
</legend>
<table cellpadding="0" cellspacing="0" style="width: 370px;">
<tr>
<td>
<table cellpadding="0" cellspacing="0">
<tr>
<td>
<table cellpadding="0" cellspacing="2">
<tr>
<td style="width: 25%">
Name:
</td>
<td style="width: 75%">
<asp:TextBox ID="txtBoxName" runat="server" Text='<%#Bind("ContactName")%>' />
<asp:RequiredFieldValidator ID="rvName" runat="server" ControlToValidate="txtBoxName"
ErrorMessage="Please enter name" Display="Dynamic" />
</td>
</tr>
<tr>
<td>
Title:
</td>
<td>
<asp:TextBox ID="txtBoxTitle" runat="server" Text='<%#Bind("ContactTitle")%>' />
<asp:RequiredFieldValidator ID="rvTitle" runat="server" ControlToValidate="txtBoxTitle"
ErrorMessage="Please enter title" Display="Dynamic" />
</td>
</tr>
<tr>
<td>
City:
</td>
<td>
<asp:TextBox ID="txtBoxCity" runat="server" Text='<%#Bind("City")%>' />
<asp:RequiredFieldValidator ID="rvCity" runat="server" ControlToValidate="txtBoxCity"
ErrorMessage="Please enter city" Display="Dynamic" />
</td>
</tr>
<tr>
<td>
Country:
</td>
<td>
<asp:TextBox ID="txtBoxCountry" runat="server" Text='<%#Bind("Country")%>' />
<asp:RequiredFieldValidator ID="rvCountry" runat="server" ControlToValidate="txtBoxCountry"
ErrorMessage="Please enter country" Display="Dynamic" />
</td>
</tr>
<tr>
<td>
Phone:
</td>
<td>
<asp:TextBox ID="txtBoxPhone" runat="server" Text='<%#Bind("Phone")%>' />
<asp:RequiredFieldValidator ID="rvPhone" runat="server" ControlToValidate="txtBoxPhone"
ErrorMessage="Please enter phone" Display="Dynamic" />
</td>
</tr>
</table>
</td>
<td align="right" style="width: 25%; padding-left: 10px;">
<telerik:RadBinaryImage ID="RadBinaryImage1" runat="server" AlternateText="Contact Photo"
ToolTip="Contact Photo" Width="90px" Height="110px" ResizeMode="Fit" DataValue='<%# Eval("Photo") %>' />
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2">
<div style="float: left; width: 160px;">
<asp:Button ID="btnUpdate" runat="server" Text="Update" CommandName="Update" />
<asp:Button ID="btnCancel" runat="server" Text="Cancel" CommandName="Cancel" CausesValidation="false" />
</div>
<telerik:RadUpload ID="ruCustomerImage" runat="server" AllowedFileExtensions=".jpg,.jpeg,.gif,.png"
MaxFileSize="1000000" ControlObjectsVisibility="None" InputSize="12" Width="160px"
Style="float: right" />
<div style="clear: both" />
</td>
</tr>
</table>
</fieldset>
</EditItemTemplate>
<InsertItemTemplate>
<!--The widths/heights of the fieldset/outer tables in the item/edit/insert templates should match to avoid wrapping or visual discrepancies
in the tiles layout-->
<fieldset style="float: left; width: 370px; height: 200px;">
<legend>Company name:
<asp:TextBox ID="txtBoxCompanyName" runat="server" />
<asp:RequiredFieldValidator ID="rvCompanyName" runat="server" ControlToValidate="txtBoxCompanyName"
ErrorMessage="Please enter company name" Display="Dynamic" />
</legend>
<table cellpadding="0" cellspacing="0" style="width: 370px;">
<tr>
<td>
<table cellpadding="0" cellspacing="5">
<tr>
<td style="width: 25%">
Name:
</td>
<td style="width: 75%">
<asp:TextBox ID="txtBoxName" runat="server" />
<asp:RequiredFieldValidator ID="rvName" runat="server" ControlToValidate="txtBoxName"
ErrorMessage="Please enter name" Display="Dynamic" />
</td>
</tr>
<tr>
<td>
Title:
</td>
<td>
<asp:TextBox ID="txtBoxTitle" runat="server" />
<asp:RequiredFieldValidator ID="rvTitle" runat="server" ControlToValidate="txtBoxTitle"
ErrorMessage="Please enter title" Display="Dynamic" />
</td>
</tr>
<tr>
<td>
City:
</td>
<td>
<asp:TextBox ID="txtBoxCity" runat="server" />
<asp:RequiredFieldValidator ID="rvCity" runat="server" ControlToValidate="txtBoxCity"
ErrorMessage="Please enter city" Display="Dynamic" />
</td>
</tr>
<tr>
<td>
Country:
</td>
<td>
<asp:TextBox ID="txtBoxCountry" runat="server" />
<asp:RequiredFieldValidator ID="rvCountry" runat="server" ControlToValidate="txtBoxCountry"
ErrorMessage="Please enter country" Display="Dynamic" />
</td>
</tr>
<tr>
<td>
Phone:
</td>
<td>
<asp:TextBox ID="txtBoxPhone" runat="server" />
<asp:RequiredFieldValidator ID="rvPhone" runat="server" ControlToValidate="txtBoxPhone"
ErrorMessage="Please enter phone" Display="Dynamic" />
</td>
</tr>
</table>
</td>
<td align="right" style="width: 25%; padding-left: 10px;">
<telerik:RadBinaryImage ID="RadBinaryImage1" runat="server" AlternateText="No Photo"
ToolTip="No Photo" Width="90px" Height="110px" ResizeMode="Fit" ImageUrl="~/ListView/Examples/FirstLook/Img/EmtpyCategoryImage.jpg" />
</td>
</tr>
<tr>
<td colspan="2">
<div style="float: left; width: 160px;">
<asp:Button ID="btnPerformInsert" runat="server" Text="Insert" CommandName="PerformInsert" />
<asp:Button ID="btnCancel" runat="server" Text="Cancel" CommandName="Cancel" CausesValidation="false" />
</div>
<telerik:RadUpload ID="ruCustomerImage" runat="server" AllowedFileExtensions=".jpg,.jpeg,.gif,.png"
MaxFileSize="1000000" ControlObjectsVisibility="None" InputSize="12" Width="160px"
Style="float: right" />
<div style="clear: both" />
</td>
</tr>
</table>
</fieldset>
</InsertItemTemplate>
<EmptyDataTemplate>
<fieldset style="width: 800px">
<legend>Customers</legend>No records for customers available.
</fieldset>
</EmptyDataTemplate>
</telerik:RadListView>
</td>
</tr>
<tr>
<td>
<h3 class="qsfSubtitle">
Grouped RadListView</h3>
<qsf:InformationBox ID="InfoBox1" runat="server">
Select a category to view its description
</qsf:InformationBox>
<telerik:RadListView ID="RadListView2" DataSourceID="SqlDataSource2" runat="server"
ItemPlaceholderID="CategoriesContainer" GroupPlaceholderID="GroupCategoriesContainer"
GroupItemCount="3" DataKeyNames="CategoryID" OnSelectedIndexChanged="RadListView2_SelectedIndexChanged">
<LayoutTemplate>
<fieldset id="GroupCategoriesContainer" runat="server" />
</LayoutTemplate>
<GroupTemplate>
<fieldset style="float: left;">
<legend>Categories group</legend>
<table>
<tr>
<asp:PlaceHolder ID="CategoriesContainer" runat="server" />
</tr>
</table>
</fieldset>
</GroupTemplate>
<ItemTemplate>
<td>
<asp:LinkButton ID="imgButton" runat="server" CommandName="Select">
<telerik:RadBinaryImage ID="RadBinaryImage1" runat="server" AlternateText="Category Photo"
Style="margin-left: 10px" ToolTip="Category Photo" Width="90px" Height="62px"
BorderColor="White" BorderWidth="2px" ResizeMode="Fit" ImageUrl='<%# string.Format("IMG/{0}.jpg", Eval("CategoryID")) %>' />
</asp:LinkButton>
<br />
<%#Eval("CategoryName")%>
<br />
</td>
</ItemTemplate>
<EmptyItemTemplate>
<td>
<img src="Img/EmtpyCategoryImage.jpg" width="110px" height="62px" alt="No Category to display"
title="No Category to display" />
</td>
</EmptyItemTemplate>
<SelectedItemTemplate>
<td>
<asp:LinkButton ID="imgButton" runat="server" CommandName="Select">
<telerik:RadBinaryImage ID="RadBinaryImage1" runat="server" AlternateText="Category Photo"
Style="margin-left: 10px" ToolTip="Category Photo" Width="90px" Height="62px"
BorderColor="Blue" BorderWidth="2px" ResizeMode="Fit" ImageUrl='<%# string.Format("IMG/{0}.jpg", Eval("CategoryID")) %>' />
</asp:LinkButton>
<br />
<span style="color: blue;">
<%#Eval("CategoryName")%></span>
<br />
</td>
</SelectedItemTemplate>
</telerik:RadListView>
</td>
</tr>
<tr>
<td>
<fieldset>
<legend>Description</legend>
<asp:Label ID="lblDescription" runat="server" />
</fieldset>
</td>
</tr>
</table>
<br />
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:TelerikConnectionString %>"
SelectCommand="SELECT [CustomerID], [CompanyName], [ContactName], [ContactTitle], [City], [Country], [Phone], [Photo] FROM [CustomerPhotos]"
DeleteCommand="DELETE FROM [CustomerPhotos] WHERE [CustomerID] = @CustomerID"
InsertCommand="INSERT INTO [CustomerPhotos] ([CustomerID], [CompanyName], [ContactName], [ContactTitle], [City], [Country], [Phone], [Photo]) VALUES (@CustomerID, @CompanyName, @ContactName, @ContactTitle, @City, @Country, @Phone, @Photo)"
UpdateCommand="UPDATE [CustomerPhotos] SET [CompanyName] = @CompanyName, [ContactName] = @ContactName, [ContactTitle] = @ContactTitle, [City] = @City, [Country] = @Country, [Phone] = @Phone, [Photo] = @Photo WHERE [CustomerID] = @CustomerID"
OnInserting="SqlDataSource1_Inserting" OnUpdating="SqlDataSource1_Updating">
<DeleteParameters>
<asp:Parameter Name="CustomerID" Type="String" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="CompanyName" Type="String" />
<asp:Parameter Name="ContactName" Type="String" />
<asp:Parameter Name="ContactTitle" Type="String" />
<asp:Parameter Name="City" Type="String" />
<asp:Parameter Name="Country" Type="String" />
<asp:Parameter Name="Phone" Type="String" />
<asp:Parameter Name="Photo" DbType="Binary" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="CustomerID" Type="String" />
<asp:Parameter Name="CompanyName" Type="String" />
<asp:Parameter Name="ContactName" Type="String" />
<asp:Parameter Name="ContactTitle" Type="String" />
<asp:Parameter Name="City" Type="String" />
<asp:Parameter Name="Country" Type="String" />
<asp:Parameter Name="Phone" Type="String" />
<asp:Parameter Name="Photo" DbType="Binary" />
</InsertParameters>
</asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
ProviderName="System.Data.SqlClient" SelectCommand="SELECT TOP 5 CategoryID, CategoryName, Description, Picture FROM Categories" />
<!-- content end -->
<telerik:Footer runat="server" ID="Footer1"></telerik:Footer>
</div>
</form>
</body>
</html><code></code>
|
|
|
|
|
I solved the problem ,thanks to everyone.
|
|
|
|
|
You'll probably get a much better response from telerik..45 ACP - because shooting twice is just silly ----- "Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "The staggering layers of obscenity in your statement make it a work of art on so many levels." - J. Jystad, 2001
|
|
|
|
|
I have created a check that if path exsist by creating and removing temporary folder. Is there any better check to check if a path inside string is valid?
Edit: Rephased
Edit 2: More Info
I used like This: (From Memory)
String path = "c:\TempCacheFolder";
Directory.CreateDirectory(path);
Directory.RemoveDirectory(path);
I needed to know if imputed string is valid before creating. I am currently designing Cache Engine for my custom control. The property CacheFilePath has get and set property. When someone programaticly enter an invalid area where it can't be written, without actually creating it before it is needed. And there is error within my approach. If I create directory with a path that have more subfolder that doesn't exsist:
Example:
Faze1. Test Create a folder.
C:\MyApp\UnkownFolder\Unkownfolder2\TempImageCache.
Faze2. Remove Folder. (Will remove only TempImageCache)
I wan't to avoid this needless step. I only wan't to validate, that the unknown directory can be created without actually creating before needing.
I am sorry if I was too cryptic about my previous postsmodified on Saturday, March 6, 2010 9:32 AM
|
|
|
|
|
using System.IO;
string myPath = @"C:\Windows";
if (Directory.Exists(myPath))
{
} .45 ACP - because shooting twice is just silly ----- "Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "The staggering layers of obscenity in your statement make it a work of art on so many levels." - J. Jystad, 2001
|
|
|
|
|
I know, but the string path migt or might not exsist. I am already using this before atempting to create and delete folder
|
|
|
|
|
I don't understand. You mean the string itself might be empty/null? It really shouldn't matter. If you pass a null/empty string to the Exists method, it will return false (or throw an exception). Just write the appropriate code to handle either condition..45 ACP - because shooting twice is just silly ----- "Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "The staggering layers of obscenity in your statement make it a work of art on so many levels." - J. Jystad, 2001
|
|
|
|
|
John Simmons / outlaw programmer wrote: I don't understand. You mean the string itself might be empty/null?
Might be. It could lead to an invalid folder like on Storage devices when removed. The folder itself doesn't have to exsist. Like temporary folder, where cache is placed. In other obvious errors, like invalid chars.
|
|
|
|
|
I suggest that you write a console app and play around with it. You seem to be aware of everything that coudl be wrong with a path name, so see what the DirectoryExists() method does with the various invalid possibilities.
You could have figured all that out on your own by now...
Be a programmer, fer christ's sake..45 ACP - because shooting twice is just silly ----- "Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "The staggering layers of obscenity in your statement make it a work of art on so many levels." - J. Jystad, 2001
|
|
|
|
|
Thanks for the info. It seems i would need to create my own parser. Thanks for everyone for their commets.
|
|
|
|
|
Ah, so you just want to see if a hypothetical path (which may or may not already exist on the file system) is valid as far as the characters it uses and length and such? In that case, you have two options. Option 1 would be to use this code and catch exceptions for invalid characters and such (various types of exceptions will be thrown based on how the path is invalid):
DirectoryInfo di = new DirectoryInfo("***");
FileInfo fi = new FileInfo("***");
The other option is to check this manually. Some things to consider when creating this code:
Path.AltDirectorySeparatorChar
Path.DirectorySeparatorChar
Path.GetInvalidFileNameChars()
Path.GetInvalidPathChars()
Check if root drives exist (may not apply to network paths)
Avoid known bad folder names (e.g., COM or something like that is invalid because it is reserved).
Path.VolumeSeparatorChar
Maximum path length (260 characters?) and max filename length.
If the path does exist, then it must be valid (but determining if it is invalid will take more work).
|
|
|
|
|
Thank for your reply. It seems it is easiest to do is use Directory.CreateDirectory() and see if it can create. That Path class has some interesting methods.
|
|
|
|
|
I just use a FileInfo. Don't try to write your own.
|
|
|
|
|
Nope. FileInfo is not what I wanted. I asked about Directory not file.
I used like This: (From Memory)
String path = "c:\TempCacheFolder";
Directory.CreateDirectory(path);
Directory.RemoveDirectory(path);
I needed to know if imputed string is valid before creating. I am currently designing Cache Engine for my custom control. The property CacheFilePath has get and set property. When someone programaticly enter an invalid area where it can't be written, without actually creating it before it is needed. And there is error within my approach. If I create directory with a path that have more subfolder that doesn't exsist:
Example:
Faze1. Test Create a folder.
C:\MyApp\UnkownFolder\Unkownfolder2\TempImageCache.
Faze2. Remove Folder. (Will remove only TempImageCache)
I wan't to avoid this needless step. I only wan't to validate, that the unknown directory can be created without actually creating before needing.
I am sorry if I was too cryptic about my previous posts
|
|
|
|
|
Saksida Bojan wrote: if imputed string is valid before creating
That's a waste of time -- things can change between the test and the creation.
When it comes time to create, just try to create and report any errors.
|
|
|
|
|
Saksida Bojan wrote: Is there any better check to check if a path inside string is valid? Building on the former posts, you'd like to check whether the parent-path is valid, and whether the name-part of the new folder is valid?
C:\Windows\MyBla:Folder
In order to verify whether "MyBla:Folder" is a valid name?
You could check the parent-path as suggested, but there may be a *lot* more reasons why the creation of a folder might fail. Don't forget your try-except I are Troll
|
|
|
|
|
I used like This: (From Memory)
String path = "c:\TempCacheFolder";
Directory.CreateDirectory(path);
Directory.RemoveDirectory(path);
I needed to know if imputed string is valid before creating. I am currently designing Cache Engine for my custom control. The property CacheFilePath has get and set property. When someone programaticly enter an invalid area where it can't be written, without actually creating it before it is needed. And there is error within my approach. If I create directory with a path that have more subfolder that doesn't exsist:
Example:
Faze1. Test Create a folder.
C:\MyApp\UnkownFolder\Unkownfolder2\TempImageCache.
Faze2. Remove Folder. (Will remove only TempImageCache)
I wan't to avoid this needless step. I only wan't to validate, that the unknown directory can be created without actually creating before needing.
I am sorry if I was too cryptic about my previous posts
Eddy Vluggen wrote: In order to verify whether "MyBla:Folder" is a valid name?
More like if it can create without creating new folder. I am designing custom control (Currently Cache Engine) I intend to handle it without trusting user input. And return errors that the user (developer) can easily repair problem
|
|
|
|
|
In order to determine validity of a path, you should not modify the file system, hence CreateDirectory and RemoveDirectory are not acceptable. Calling them may cause a lot of unwanted side effects, e.g. when a FileSystemWatcher has been installed.
What you can do is:
1. use Path.GetFullPath()
2. use new DirectoryInfo()
each of those will throw an appropriate exception when the path isn't valid.
And of course you could parse the path yourself (not recommended).
|
|
|
|
|
tham. Didn't know DirecotryInfo had such flexebility. thanks. The code so far:
public static bool IsValidPath(String path)
{
DirectoryInfo di;
try
{
di = new DirectoryInfo(path);
}
catch (NotSupportedException) { return false; }
bool foundLogicalDrive = false;
foreach (String str in Directory.GetLogicalDrives())
{
if (path.Substring(0, 3).ToUpper() == str)
foundLogicalDrive = true;
}
if (!foundLogicalDrive)
return false;
return IsValidPathParser(di);
}
private static bool IsValidPathParser(DirectoryInfo di)
{
if (di.Exists)
{
return true;
}
else
{
if (di.Name.ToUpper() != di.Root.Name.ToUpper())
return IsValidPathParser(di.Parent);
else
return false;
}
}
The last part i wan't to check if users have permision to create and write in that folder. So far i haven't found anything usefull. Still googleing about DirectorySecurty.
|
|
|
|
|
I have to agree with the other posters, creating and deleting the dir is at best inelegant.
You may have a valid path, with write permission, but not create permission.
Worst case, I would check it for null, then get info on it from Directory.
If this fails, get rid of everything from the last '/' back, inclusive, and try again.
If that fails you know the proposed directory/file does not exist and that the directory holding also does not exist.
If it succeeds, you would have needed to get file info to determine if you have write or create permissions to the paths given.
We had a sergeant, in officer basic course, when (not if)one of us LTs came with an f'd up way to do something, he'd say:
"it's a technique"Opacity, the new Transparency.
|
|
|
|
|
|
I knot it is possible, because i saw message here and i can't find it.
Whitch atribute i need to set, so that when I double click in Solution explorer opens a code instead Designer mode.
Thank you in advance.
|
|
|
|
|
[System.ComponentModel.DesignerCategory("code")]
Found here[^]
"If you can't explain it simply, you don't understand it well enough" ~ Albert Einstein
"If you think it's expensive to hire a professional to do the job, wait until you hire an amateur." ~ Paul Neal "Red" Adair
|
|
|
|