Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование (VB,C#,ASP,.NET): новости, советы, примеры


Выпуск # 678

Друзья! Прошло совсем мало времени с момент последнего выпуска, и вот уже новый! Удивительно, как быстро летит время в Интернете, сколько всего нового происходит ежедневно, да что там, ежесекундно. И Kbyte.Ru в этом плане не исключение, на сайте столько всего произошло, столько всего, что многое даже и не влезло в этот выпуск! И кто только придумал ограничения скорости интернет-соединения и объемов писем! Эх..., благо на сайте есть живая лента событий, которая не даст потеряться среди гущи событий.
Надеюсь, этот выпуск будет интересен для вас. Если вы хотите увидеть в следующих выпусках что-то конкретное, напишите мне об этом на ящик subscribe@kbyte.ru.


Содержание выпуска

Читайте в этом выпуске:

Если у вас есть вопросы по программированию или работе с компьютером, не стесняйтесь, спрашивайте.

Форумы Kbyte.Ru

На форумах Kbyte.Ru постоянно появляются новые интересные темы и обсуждения. В этом выпуске представлены лишь новые темы, с момента прошлой рассылки.

Кстати, любой желающий может на форумах Kbyte.Ru совершенно свободно получить помощь грамотных специалистов в области программирования, да и в целом информационных технологий.

Задать свой вопрос прямо сейчас

Web.config
<authentication mode="Forms">
     <forms loginUrl="logon.aspx" name=".ASPXFORMSAUTH"></forms>
</authentication>

Логины и пароли храню в таблице USERS в БД MS SQL.
После удачной авторизации на странице logon.aspx, логин перенаправляю на станицу Default.aspx
FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, False)
и на Default.aspx получаю его
Context.User.Identity.Name

В таблице USERS кроме логина и пароля есть еще не мало важные поля SET1, SET2 и SET3 которые несут в себе инфу о том какие данные будут доступны этому логину на следующих страницах.
Подскажите, пожалуйста, каким способом передать данные из полей "SET?" на следующую страницу и как вытащить их при загрузки страницы?

[- к содержанию -]

Ответ #1 @Aleksey Nemiro 29.02.2012 18:26
Через
Context.User.Identity
никак.

Нужно делать свои методы. Если данные изменяются редко, для их хранения, чтобы не дергать постоянно базу, лучше использовать Session.
Т.е., когда юзер проходит авторизацию, нужно получить из базы все необходимые данные для указанного юзера (например, руками через SqlConnection + SqlCommand) и перенести их в Session, и в последующем брать из Session, а не из базы. Сессия живет по умолчанию 20 минут.
В Session можно передавать как одиночные значения, например:
Session("Set1") = 123
Session("Set2") = "hello"
Session("Set3") = Now
так и объекты
Public Class UsersData
  Public Property Set1 As Integer
  Public Property Set2 As String
  Public Property Set3 As Date
End Class
If Session("UserData") IsNot Nothing Then Return ' в Session уже есть объект, повторная инициализация не требуется
Dim ud As New UsersData()

'...
'тут код получения данных из базы для авторизированного пользователя
'...

ud.Set1 = 123 ' передача данных из базы в объект
ud.Set2 = "hello"
ud.Set3 = Now
Session("UserData") = ud 'передача объекта в Session
Логику наполнения объекта данными, кстати, можно реализовать в самом классе (в моем примере - UsersData).

[- к содержанию -]

Добавить свой ответ в эту тему
Textbox @rusiko 29.02.2012 00:57
Привет всем! Ребятя у меня опять появились проблемы с этим TEXTBOX-ом. Вот моя форма. Как я могу сделать так
чтоб когда я ввожу что-то в этот TEXTBOX, то сразу же она нахола бы эти сведения (если они есть) из БД, независимо
что это за информация Имя, Фамилия, Адрс и.т п.То есть если моя БД содержит большую информацию,и я не знаю где именно
находиться то что мне нужно. Спасибо заранее!

[- к содержанию -]

Ответ #1 @Aleksey Nemiro 29.02.2012 16:41
На картинке, рядом с TextBox-ом нужно добавить кнопку "Поиск". Где-нибудь в TableAdapter, нужно создать запрос, который будет производить выборку данных при помощи инструкции LIKE: SELECT * FROM table WHERE field LIKE @textBox. Ну и в обработчике клика по кнопке прописать загрузку данных в DataGrid из созданного в TableAdapter запроса.
Если непонятно, код (или даже проект) в студию (точнее на сайт), покажу как.

Голым кодом это делается проще, в плане понимания и объяснения на форуме, я уже много миллионов раз показывал примеры на эту тему. Вот пример с MS Access, с SQL Server будет аналогично, только строка соединения друая и объекты не OleDb а Sql.

[- к содержанию -]

Добавить свой ответ в эту тему
Visual Studio предоставляет графические красивые инструменты с помощью которых в несколько кликов можно наполнять контролы данными с БД (GridView, DropDownList, ListBox и т.д.)
И есть метод наполнения контролов в коде программы с помощью SQL запросов.
Имеем хост с ІР 192.168.1.1
Какими методами лучше всего создавать соединения с БД, что бы после заливание сайта на хост не нада было переделывать соединения, если в процессе создания WEB-приложения использую БД 192.168.1.1\SQLexpress
Сайт будет лежать на 192.168.1.1

[- к содержанию -]

Ответ #1 @Aleksey Nemiro 28.02.2012 20:17
Для хранения строк соединения с БД в файле web.config есть специальная секция, строка соединения прописывается там один раз и используется в коде приложения. См. <connectionStrings>

[- к содержанию -]

Ответ #2 @roma_rio 29.02.2012 11:38
Спасибо.
Добавил в web.config
<connectionStrings>
  <clear/>
  <add name ="myConnStr"
     connectionString="Data Source=192.168.1.1\sqlexpress;Initial Catalog=BASE;User ID=userid; Password=Password"
     providerName="System.Data.SqlClient"/>
 </connectionStrings>
При создании соединения с БД Visual Studio определил мою строку соединения myConnStr.

Потом когда я закину приложение на сервер IIS в web.config нужно исправить Data Source = localhost\sqlexpress или это не столь важно?

[- к содержанию -]

Ответ #3 @Aleksey Nemiro 29.02.2012 12:09
Потом когда я закину приложение на сервер IIS в web.config нужно исправить Data Source = localhost\sqlexpress или это не столь важно?
Это не имеет значения, это скорей вопрос удобства.
Localhost будет работать только на сервере, значить, если нужно будет обновить web.config, то придется менять строку соединения вновь.
При использовании IP (исключая 127.0.0.1) строку менять постоянно не нужно. Но в таком случае идет жесткая привязка к айпишнику, и если он изменится, то придется менять строку соединения.
В идеале, лучше всего использовать домены (исключая localhost), т.к. апишник значения уже иметь не будет.

В локальной сети можно ограничиться и IP.

PS: Кстати, параметр connectionStrings может иметь атрибут configSource, который позволяет указывать относительный путь к файлу, в котором хранятся строки соединения. Речь о блоке connectionStrings.
web.config
<connectionStrings configSource="connections.config" />
блок connectionStrings вынесен в файл connections.config
<?xml version="1.0"?>

<connectionStrings>
 <remove name="LocalSqlServer"/>
 <add name="LocalSqlServer" connectionString="строка соединения" />
</connectionStrings>
Это более удобней, т.к. web.config меняется чаще, чем строки соединения и в данном случае строку(и) соединения можно прописать один раз и вообще забыть. Даже с localhost.

[- к содержанию -]

Добавить свой ответ в эту тему
БД в VB 2010 @rusiko 26.02.2012 23:51
Привет всем. Во первых спасибо большое за помощь с LİSTBOX. У меня есть еще один вопрос. Помогите пожалуйста. Вопрос вот в чем. Я создал одну маленькую базу данных на SQL Server 2008 и сделал бэкап.Вроде бы все готово. Но я не могу перенести эту базу данных в Visual Basic 2010. Дело в том что раньше базы данных я создавал внутри Visual Basic 2010, но эти БД не отражались в SQL и плюс работали только на одном ПК.Теперь создал БД в SQL Server 2008, но не могу найти как в Visual Basic 2010 включить эту БД. Надеюсь не слишком тупо описал. Заранее спасибо.

[- к содержанию -]

Ответ #1 @Aleksey Nemiro 27.02.2012 16:26
А каким образом раньше использовалась БД? Или чисто на автоматически созданных DataSource? Если да, то нужно источник данных создать вручную. Добавить на форму элемент BindingSource:

прописать параметры соединения с SQL Server:


ну а дальше все должно быть как и раньше

[- к содержанию -]

Добавить свой ответ в эту тему
Listbox @rusiko 25.02.2012 11:28
Привет.Подскажите как сделать так чтоб в Visual Basic 2010 при выходе из формы данные в ListBox не стирались (сохранялись).Спасибооо большое!!!!!!!

[- к содержанию -]

Ответ #1 @[i]Pro 26.02.2012 07:49
В Form_Load вызов этой функции
  Sub LoadList()
    ListBox1.Items.AddRange(IO.File.ReadAllLines("list.txt"))
  End Sub

В Form_Closing этой
  Sub SaveList()
    Dim list As New ArrayList
    For i = 0 To ListBox1.Items.Count - 1
      list.Add(ListBox1.Items.Item(i))
    Next
    IO.File.WriteAllLines("list.txt", list.ToArray)
  End Sub

Если лист как то изменяется, то постоянно сохраняй его

[- к содержанию -]

Добавить свой ответ в эту тему
Есть текстовый файл. Загружаю его в директорию сайт\Files оттуда читаю по-строчно и вытаскиваю только необходимые данные.
Извлеченными данными хочу заполнить GridView и после нажатия кнопки эти данные добавлять в БД.
Нужные данные читаю, могу вывести в Label, но в GridView не могу запихнуть. Может я чего то не понимаю. Или для такой задачи мне GridView не подойдет?

[- к содержанию -]

Ответ #1 @Aleksey Nemiro 24.02.2012 18:37
Можно сделать в памяти объект типа DataTable, добавить в него колонки (Columns), а затем строки (Rows) с данными и присвоить свойству DataSource экземпляра GridView.
Dim DT As New DataTable("MyTable")
DT.Columns.Add("колонка 1")
DT.Columns.Add("колонка 2")
DT.Columns.Add("колонка 3")
'... и т.д. и т.п.

DT.Rows.Add("данные для 1-ой колонке", "данные для 2-ой колонке", "данные для 3-ей колонке")
DT.Rows.Add("вторая строка данных для 1-ой колонке", "данные для 2-ой колонке", "данные для 3-ей колонке")
DT.Rows.Add("третья строка данных для 1-ой колонке", "данные для 2-ой колонке", "данные для 3-ей колонке")
DT.Rows.Add("четвертая строка данных для 1-ой колонке", "данные для 2-ой колонке", "данные для 3-ей колонке")
DT.Rows.Add("пятая строка данных для 1-ой колонке", "данные для 2-ой колонке", "данные для 3-ей колонке")
'... и т.д. и т.п.

GridView1.DataSource = DT ' прикрутили данные к гриду
GridView1.DataBind() ' заполнили грид данными

А вообще, текстовой файл тоже можно указать в качестве DataSource у GridView. В результате, каждая строка файла должна будет находиться в отдельной строке в гриде:
GridView1.DataSource = System.IO.File.ReadAllLines(Server.MapPath("TextFile1.txt"))
GridView1.DataBind()

[- к содержанию -]

Ответ #2 @roma_rio 24.02.2012 19:01
В моем случае не подойдет текстовой файл указать в качестве DataSource, потому что я читаю не все данные.
Но это очень полезная информация. спасибо

[- к содержанию -]

Ответ #3 @roma_rio 28.02.2012 11:55
А где создается объект DataTable?
Если несколько клиентов в разных местах будут загружать информацию, DataTable будет отдельный для каждого клиента и данные не перемешаются?

[- к содержанию -]

Ответ #4 @Aleksey Nemiro 28.02.2012 12:05
А где создается объект DataTable?
в памяти, как любая другая переменная.
Если несколько клиентов в разных местах будут загружать информацию, DataTable будет отдельный для каждого клиента и данные не перемешаются?
да.

Если нужно, чтобы DataTable был общим, можно его кешировать - Cache:
Dim DT As DataTable
If Page.Cache("DataTableCache") IsNot Nothing Then
  'есть в кеше
  DT = CType(Page.Cache("DataTableCache"), DataTable)
Else
 'нет в кеше, нужно создать
  DT = New DataTable("MyTable")
  'колонки
  '...
  'данные
  '...
  'кеширование
  Page.Cache.Add("DataTableCache", DT, Nothing, Now.AddHours(12), TimeSpan.Zero, CacheItemPriority.Normal, Nothing) 'Now.AddHours(12) - кеширование на 12 часов
End If

GridView1.DataSource = DT
GridView1.DataBind()

Или использовать переменную Shared:
Private Shared DT As DataTable
If DT Is Nothing Then
  'создание DataTable и наполнение даннымми
End If

[- к содержанию -]

Добавить свой ответ в эту тему

Все темы и обсуждения

Исходные коды

Удаление дубликатов

Visual Basic .NET: Строки @[i]Pro 01.03.2012 17:26
Простенькая функция для удаления дубликатов строк, немного кривая :)
  Public Function RemoveDuplicates(ByVal text As String) As String
    Dim Result As String = ""
    Dim noDupsArrList As New ArrayList()
    Dim items() As String = Split(text, vbNewLine)

    For i As Integer = 0 To items.Length - 1
      If Not noDupsArrList.Contains(items(i).Trim()) Then
        noDupsArrList.Add(items(i).Trim())
      End If
    Next

    Dim uniqueItems As String() = New String(noDupsArrList.Count - 1) {}
    noDupsArrList.CopyTo(uniqueItems)
    For i = 0 To uniqueItems.Count - 1
      Result &= uniqueItems(i) & vbNewLine
    Next

    Return Result.Trim
  End Function

[- к содержанию -]

Render Target Bitmap Solution

Visual Basic .NET: Графика @Shark1 28.02.2012 02:20
Пример простенького приложения, позволяющего добавить и настроить отображение тени у вашей иконки в формате .png ну и потом конечно всё это сохранить в файл.

К данном исходному коду прилагаются файлы примеров. Скачать.

[- к содержанию -]

Расчет md5 хеш-суммы файла

C#: Криптография, защита данных @Команда Kbyte.Ru 26.02.2012 16:46
В этом примере показана функция для расчета хеш-суммы файла с использованием алгоритма md5.
public string GetMD5HashFromFile(string fileName)
{
  FileStream file = new FileStream(fileName, FileMode.Open);
  MD5 md5 = new MD5CryptoServiceProvider();
  byte[] retVal = md5.ComputeHash(file);
  file.Close();
 
  StringBuilder sb = new StringBuilder();
  for (int i = 0; i < retVal.Length; i++)
  {
    sb.Append(retVal[i].ToString("x2"));
  }
  return sb.ToString();
}

[- к содержанию -]

Все исходные коды

Вакансии в IT

Инженер-разработчик

Россия, Москва | Работа в офисе

Инженер разработчик РЭА

Россия, Москва | Работа в офисе

JAVA-программист

Россия, Москва | Работа в офисе

Программист в отдел ПО бортовычислительных машин

Россия, Москва | Работа в офисе

Программист в отдел электроники

Россия, Москва | Работа в офисе

Программист со знанием Отель 3

Россия, Москва | Работа в офисе

Программист 1 С

Россия, Москва | Работа в офисе | 50 000.00 RUB

Программист

Россия, Москва | Работа в офисе | 35 000.00 RUB

Инженер-программист

Россия, Москва | Работа в офисе | 50 000.00 RUB

Программист

Россия, Москва | Работа в офисе | 20 000.00 RUB

Все вакансии в IT · Создать резюме

[- к содержанию -]

Новости мира IT

Вышла бета-версия Windows 8

Microsoft в среду, 29 февраля, выпустила бета-версию операционной системы Windows 8. О выходе ОС было объявлено на выставке Mobile World Congress в Барселоне.

Сама компания не использует слово "бета-версия" и называет операционную систему Windows 8 Consumer Preview ("Демонстрационная версия Windows 8 для пользователей"). Тем самым подчеркивается отличие от вышедшей в сентябре Developer Preview ("Демонстрационная версия для разработчиков"). 

Старший разработчик Windows 8 Стивен Синофски заявил, что с сентября Microsoft внесла в ОС "свыше ста тысяч изменений". Он уточнил, что система стала более "надежной", были доработаны механизмы управления, в состав системы вошел магазин приложений Windows Store.

Несмотря на то, что Windows 8 может работать на ARM-планшетах, бета-версию системы можно установить только на устройства с процессорной архитектурой x86/64 (в большинстве своем это компьютеры).

Загрузить систему можно с сайта Microsoft. Бета-версия распространяется бесплатно, но сможет работать в течение ограниченного периода времени. "Вес" ISO-файла составляет в среднем от 2,5 до 3,5 гигабайт в зависимости от дистрибутива. ОС доступна на нескольких языках, но русский в их число не входит.

Представители Microsoft раскрыли системные требования Windows 8: это процессор с частотой в гигагерц и выше, 1 или 2 гигабайта оперативной памяти и 16 или 20 гигабайт дискового пространства (для 32- и 64-разрядных версий соответственно), а также DirectX9-совместимая видеокарта.

На сайте Microsoft сообщается, что устанавливать Consumer Preview на компьютеры рекомендуется только "опытным пользователям".

Пользователям Consumer Preview доступны два интерфейса - "обычный" (он напоминает интерфейс Windows 7) и Metro, где вместо иконок используются виджеты - они же "живые плитки". Программы, написанные под предыдущие версии Windows, запускаются только в "обычном" интерфейсе. В состав ОС входит браузер Internet Explorer 10 в двух вариантах - для "обычного" интерфейса и для Metro.

Metro-приложения можно загрузить из интернет-магазина Windows Store, который Microsoft также представила 29 февраля. Магазин также работает в тестовом режиме, и в нем пока содержатся только бесплатные программы.

Помимо Windows 8, интерфейс Metro используется в мобильной ОС Windows Phone 7 и в игровой консоли Xbox.

Сроки выхода финальной версии Windows 8 компания не называет, но ожидают, что это произойдет осенью 2012 года. "Планшетная" система будет продаваться только вместе с устройствами; приобрести ее отдельно будет нельзя.

01.03.2012 04:35 · Категория: Бизнес в IT · Источник: Lenta.ru

[- к содержанию -]

Планшет-"матрешка" Asus поступит в продажу в апреле

Asus пообещала, что устройство Padfone появится в магазинах в апреле. Оно представляет собой док-станцию в виде планшета, в которую помещается смартфон. Вопреки ожиданиям, в основу системы ляжет двухъядерный процессор Snapdragon, а не платформа Tegra 3 на четырех ядрах.

29.02.2012 12:51 · Категория: Железо · Источник: Lenta.ru

[- к содержанию -]

Nokia выпустила смартфон с 41-мегапиксельной камерой

Nokia представила смартфон 808 PureView с разрешением фотоматрицы в 41 мегапиксель. Финальный размер фото, однако, составит от 2 до 8 мегапикселей, поскольку несколько пикселей будут объединяться в один для повышения качества изображения. Аппарат поступит в продажу в мае и будет стоить порядка 450 евро.

29.02.2012 12:50 · Категория: Железо · Источник: Lenta.ru

[- к содержанию -]

Все новости


Подпишитесь на тематические RSS-ленты Kbyte.Ru, чтобы быть в курсе последних новостей:

Основная лента · Форумы (темы и сообщения) · Visual Basic 5.0/6.0 · Visual Basic .NET · C# (Си шарп) · Delphi · JavaScript · ActionScript · ASP .NET · ASP .NET MVC

Ищите Kbyte.Ru в социальных сетях FaceBook, ВКонтакте, Twitter.

Если вы занимаетесь программированием, то наверняка вам пригодятся хитрые инструменты.


Международный портал для программистов и разработчиков Kbyte.Ru основан в 2006 году. Целью портала является объединение программистов и специалистов IT-бизнеса, студентов и преподавателей для обмена опытом и знаниями, оказания помощи во всех делах и начинаниях в области IT.
Kbyte.Ru является парнёром компаний Mail.Ru Group, WebMoney Transfer, Ozon.Ru и др.
Выпуск рассылки подготовлен автоматически. Все права на материалы выпуска принадлежат Kbyte.Ru если иное не указано отдельно.


В избранное