В перерывах между работой на огороде и монтажом металлосайдинга на доме - создал проект
www.atdtreid.ru Из интересного
1. Применение Routing к новостям - здесь пришлось потрудиться:
А) в базе данных а за основу была взята таблица tNews из проекта больниц изменил тип данных поля IDNEWS c integer на int
Б) еще раз изучить КАК ПРАВИЛЬНО ПРИМЕНЯТЬ Routing - особенно что и где надо прописывать в файле Web.Config - вот его содержимое
<?xml version="1.0"?>
<configuration>
<connectionStrings>
...
</connectionStrings>
<appSettings/>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite"/>
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite"/>
</DbProviderFactories>
</system.data>
<system.web>
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Data.SQLite, Culture=neutral, PublicKeyToken=DB937BC2D44FF139"/>
<add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Management, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Data.Services.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="Microsoft.Build.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
</assemblies>
</compilation>
<authentication mode="Forms">
<forms name="Udove" loginUrl="login.aspx" />
</authentication>
<customErrors mode="RemoteOnly" defaultRedirect="~/page.aspx"/>
<pages>
<namespaces>
<clear/>
<add namespace="System"/>
<add namespace="DSTableAdapters"/>
<add namespace="System.IO"/>
<add namespace="System.Collections"/>
<add namespace="System.Collections.Generic"/>
<add namespace="System.Collections.Specialized"/>
<add namespace="System.Configuration"/>
<add namespace="System.Data"/>
<add namespace="System.Text"/>
<add namespace="System.Text.RegularExpressions"/>
<add namespace="System.Web"/>
<add namespace="System.Web.Caching"/>
<add namespace="System.Web.SessionState"/>
<add namespace="System.Web.Security"/>
<add namespace="System.Web.Profile"/>
<add namespace="System.Web.UI"/>
<add namespace="System.Web.UI.WebControls"/>
<add namespace="System.Web.UI.WebControls.WebParts"/>
<add namespace="System.Web.UI.HtmlControls"/>
<add namespace="Udove"/>
</namespaces>
<controls>
<add tagPrefix="ajaxCT" namespace="AjaxControlToolkit" assembly="AjaxControlToolkit"/>
<add tagPrefix="ajaxCT" namespace="AjaxControlToolkit.HTMLEditor" assembly="AjaxControlToolkit"/>
<add tagPrefix="udp" tagName="TextBoxCalendar" src="~/Controls/TextBoxCalendar.ascx"/>
<add tagPrefix="udp" tagName="Content" src="~/Controls/Content.ascx"/>
</controls>
</pages>
</system.web>
<system.webServer>
<!--Для подключения библиотеки Routing-->
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true"/>
<!--<handlers>
<remove name="ChartImageHandler"/>
<add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</handlers>-->
<staticContent>
<mimeMap fileExtension=".ogg" mimeType="video/ogg" />
<mimeMap fileExtension=".ogv" mimeType="video/ogg" />
<mimeMap fileExtension=".mp4" mimeType="video/mp4" />
</staticContent>
<!-- <staticContent>
<mimeMap fileExtension=".m4v" mimeType="video/m4v" />
<mimeMap fileExtension=".ogg" mimeType="audio/ogg" />
<mimeMap fileExtension=".oga" mimeType="audio/ogg" />
<mimeMap fileExtension=".ogv" mimeType="video/ogg" />
<mimeMap fileExtension=".webm" mimeType="video/webm"/>
<mimeMap fileExtension=".wma" mimeType="audio/x-ms-wma" />
<mimeMap fileExtension=".wmv" mimeType="audio/x-ms-wmv" />
<mimeMap fileExtension=".xaml" mimeType="application/xaml+xml" />
<mimeMap fileExtension=".xap" mimeType="application/x-silverlight-app" />
<mimeMap fileExtension=".xbap" mimeType="application/x-ms-xbap" />
</staticContent>-->
<!-- For silverlight applicaitons -->
</system.webServer>
<location path="Admin">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
</configuration>
2. Использование файла *.XLS импортированного из 1С- бухгалтерии для формирования GridView на странице
http://atdtreid.ru/PriceList/ и соответственно настройка GridView для постраничного просмотра прайса
вот код страницы *.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="PriceList_Default" %>
<asp:Content ID="Content1" ContentPlaceHolderID="cphContent" runat="Server">
<% if (SiteType.IsMobile())
{%>
<script type="text/javascript">
$(document).ready(function () {
$("#pricelist").addClass("selected");
});
</script>
<% } %>
<% if (!SiteType.IsMobile())
{%>
<div class="sitemap">
<a href="javascript://" onclick="atoprint('MessForPrint');">
<asp:Image ID="print" runat="server" ImageUrl="~/images/print_Button.png" ToolTip="Печать страницы"
BorderColor="White" BorderStyle="Solid" BorderWidth="0" />
</a>
</div>
<%--<br />
<asp:Label ID="lbl1" runat="server" Font-Bold="true">Строка поиска - до 3-х ключевых слов - или цену товара</asp:Label>
<br />
<br />
<asp:TextBox ID="txtSearch" runat="server" ToolTip="Условие поиска - допустимы символы русского алфавита, цифры и пробел"
ValidationGroup="search" Text="Строка поиска" onkeydown="if (this.value == 'Строка поиска') this.value = '';"
onclick="this.value=''" OnTextChanged="txtSearch_OnTextChanged" AutoPostBack="True"
Width="600px" />
<asp:Panel ID="Panel1" runat="server" CssClass="NewsR">
<asp:Button ID="btnSearch" runat="server" ToolTip="Поиск" Style="background-image: url(../images/search.png);
background-repeat: no-repeat;" BackColor="Transparent" Height="22px" Width="64px"
OnClick="btnSearch_Click" />
</asp:Panel>
<br />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtSearch"
ErrorMessage="Допустимы символы русского алфавита, цифры и пробел" />
<ajaxCT:FilteredTextBoxExtender ID="FilteredTextBoxExtender1" runat="server" TargetControlID="txtSearch"
ValidChars="АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя 0123456789"
Enabled="True" />
<br />--%>
<% } %>
<div id="MessForPrint">
<udp:Content ID="cCharter" runat="server" NumPage="3" />
<br />
<hr />
<asp:Panel ID="Panel2" runat="server" CssClass="NewsR">
Вы читаете страницу
<%=GridView1.PageIndex + 1%>
из
<%=GridView1.PageCount%>
</asp:Panel>
<table width="800" align="center" cellpadding="0" cellspacing="0">
<tr>
<td colspan="2" align="center" height="30">
<hr />
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" CellPadding="5" PageSize="100"
OnPageIndexChanging="GridView1_PageIndexChanging" CssClass="GridViewStyle" PagerStyle-CssClass="PagerStyle">
<Columns>
<asp:TemplateField HeaderText="№">
<ItemTemplate>
<%# Container.DataItemIndex + 1 %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<PagerSettings Position="TopAndBottom" Mode="NumericFirstLast" />
<EmptyDataTemplate>
По Вашему запросу: ничего не найдено
</EmptyDataTemplate>
</asp:GridView>
</td>
</tr>
</table>
<br />
<asp:Panel ID="pnlgvItems" runat="server" CssClass="NewsR">
Вы читаете страницу
<%=GridView1.PageIndex + 1%>
из
<%=GridView1.PageCount%>
</asp:Panel>
</div>
</asp:Content>
*.aspx.cs и страницы кода соответственно
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.OleDb;
using Udove;
using DSTableAdapters;
using System.Collections;
using System.Diagnostics;
using System.Text.RegularExpressions;
public partial class PriceList_Default : BasePage
{
String search0, search1, search2;
RecPagesTableAdapter rpTA = new RecPagesTableAdapter();
DataTable dt = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
string path = Server.MapPath("~/Admin/excelData/price.xls");
ExportToGrid(path);
DataView dvPageInfo = new DataView(rpTA.GetData(), "IDPage=3", "nameB", DataViewRowState.CurrentRows);
if (dvPageInfo.Count > 0)
{
this.Title += dvPageInfo[0]["NamePage"] + " | " + dvPageInfo[0]["nameB"];
}
}
void ExportToGrid(String path)
{
OleDbConnection MyConnection = null;
DataSet DtSet = null;
OleDbDataAdapter MyCommand = null;
MyConnection = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0; Data Source='" + path + "';Extended Properties=Excel 8.0;");
//use below connection string if your excel file .xslx 2007 format
// MyConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + path + "';Extended Properties=Excel 12.0;");
MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection);
DtSet = new System.Data.DataSet();
MyCommand.Fill(DtSet, "[Sheet1$]");
dt = DtSet.Tables[0];
MyConnection.Close();
if (dt.Rows.Count > 0)
{
FillGrid();
}
}
public void FillGrid()
{
GridView1.DataSource = dt;
GridView1.DataBind();
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
FillGrid();
}
/// <summary>
/// Поиск по файлу
/// </summary>
/// <param name="state"></param>
#region
//protected void txtSearch_OnTextChanged(object sender, EventArgs e)
//{
// if (IsPostBack == true)
// {
// if (txtSearch.Text.Length < 3)
// {
// txtSearch.Text = "Строка поиска";
// }
// }
//}
//protected void btnSearch_Click(object sender, EventArgs e)
//{
// string searchStr = txtSearch.Text.Trim();
// if (searchStr != "Строка поиска")
// {
// Regex rxNums = new Regex(@"^\d+$");
// if (rxNums.IsMatch(searchStr))
// {
// DataView dvSearch = new DataView(dt, "come LIKE '" + searchStr + "%'", "code", DataViewRowState.CurrentRows);
// if (dvSearch.Count > 0)
// {
// GridView1.DataSource = dvSearch;
// GridView1.DataBind();
// }
// else
// {
// ShowAlertMessage("По Вашему запросу ничего не найдено - измените условия поиска.");
// }
// }
// else
// {
// int countWord = searchStr.Split(' ').Length;
// string[] searchWord = searchStr.Split(' ');
// search0 = searchWord[0].Remove(searchWord[0].Length - 1).ToString();
// if (countWord == 2)
// {
// search1 = searchWord[1].Remove(searchWord[1].Length - 1).ToString();
// }
// if (countWord == 3)
// {
// search1 = searchWord[1].Remove(searchWord[1].Length - 1).ToString();
// search2 = searchWord[2].Remove(searchWord[2].Length - 1).ToString();
// }
// if (countWord > 3)
// {
// ShowAlertMessage("По Вашему запросу ничего не найдено - измените условия поиска.");
// }
// if (countWord == 1)
// {
// DataView dvSearch = new DataView(dt, "name LIKE '%" + search0 + "%'", "code", DataViewRowState.CurrentRows);
// if (dvSearch.Count > 0)
// {
// GridView1.DataSource = dvSearch;
// GridView1.DataBind();
// }
// else
// {
// ShowAlertMessage("По Вашему запросу ничего не найдено - измените условия поиска.");
// }
// }
// else
// if (countWord == 2)
// {
// DataView dvSearch = new DataView(dt, "name LIKE '%" + search0 + "%'", "code", DataViewRowState.CurrentRows);
// if (dvSearch.Count > 0)
// {
// DataTable dtSearch1 = new DataTable();
// dtSearch1 = dvSearch.ToTable();
// DataView dvSearch1 = new DataView(dtSearch1, "name LIKE '%" + search1 + "%'", "code", DataViewRowState.CurrentRows);
// if (dvSearch1.Count > 0)
// {
// GridView1.DataSource = dvSearch1;
// GridView1.DataBind();
// }
// else
// {
// ShowAlertMessage("По Вашему запросу ничего не найдено - измените условия поиска.");
// }
// }
// }
// else
// if (countWord == 3)
// {
// DataView dvSearch = new DataView(dt, "name LIKE '%" + search0 + "%'", "code", DataViewRowState.CurrentRows);
// if (dvSearch.Count > 0)
// {
// DataTable dtSearch1 = new DataTable();
// dtSearch1 = dvSearch.ToTable();
// DataView dvSearch1 = new DataView(dtSearch1, "name LIKE '%" + search1 + "%'", "code", DataViewRowState.CurrentRows);
// if (dvSearch1.Count > 0)
// {
// DataTable dtSearch2 = new DataTable();
// dtSearch2 = dvSearch1.ToTable();
// DataView dvSearch2 = new DataView(dtSearch2, "name LIKE '%" + search2 + "%'", "code", DataViewRowState.CurrentRows);
// if (dvSearch2.Count > 0)
// {
// GridView1.DataSource = dvSearch2;
// GridView1.DataBind();
// }
// else
// {
// ShowAlertMessage("По Вашему запросу ничего не найдено - измените условия поиска.");
// }
// }
// }
// }
// }
// }
//}
#endregion
/// <summary>
/// Вспомогательные функции
/// </summary>
/// <param name="state"></param>
#region
public static void ShowAlertMessage(string error)
{
Page page = HttpContext.Current.Handler as Page;
if (page != null)
{
error = error.Replace("'", "\'");
ScriptManager.RegisterStartupScript(page, page.GetType(), "«Ашинский торговый дом «Трейд»", "alert('" + error + "');", true);
}
}
public Control FindControlRecursive(Control ctrl, string id)
{
if (ctrl.ID == id)
{
return ctrl;
}
foreach (Control child in ctrl.Controls)
{
Control t = FindControlRecursive(child, id);
if (t != null)
{
return t;
}
}
return null;
}
protected override void SavePageStateToPersistenceMedium(object state)
{
}
protected override object LoadPageStateFromPersistenceMedium()
{
return null;
}
#endregion
}
Что хотелось бы еще реализовать:
1. Поиск по данному GridView
2. Переключение количества записей в GridVew при просмотре - допустим 100, 250, 500, 1000, Все
при переходе по ссылке - © доступна мобильная версия сайта - и так же обратно
Максим - оцени как данный сайт смотрится в мобильной версии