Рассылка закрыта
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Программирование (VB,C#,ASP,.NET): новости, советы, примеры
Выпуск # 680Очередной выпуск рассылки! За последнее время на сайте произошло столько всего, столько всего, что все просто не уместилось в этот выпуск! Но ничего, ведь вы всегда можете ознакомиться со всеми обновлениями непосредственно посетив сайт. Кстати, помимо изменения в содержании Kbyte.Ru, появлении новых интересных материалов, проект постоянно совершенствуется технически, и вы можете принять в этом непосредственное участие, присылая свои идеи и предложения. Содержание выпускаЧитайте в этом выпуске: Если у вас есть вопросы по программированию или работе с компьютером, не стесняйтесь, спрашивайте.Форумы Kbyte.RuНа форумах Kbyte.Ru постоянно появляются новые интересные темы и обсуждения. В этом выпуске представлены лишь новые темы, с момента прошлой рассылки. Кстати, любой желающий может на форумах Kbyte.Ru совершенно свободно получить помощь грамотных специалистов в области программирования, да и в целом информационных технологий. Задать свой вопрос прямо сейчас Ошибка в DataGridView @rusiko 15.03.2012 00:15 Привет. У меня есть вопрос. Я воспользовался вашей помощью насчет добавления данных из Texbox в DataGridView. Все хорошо, большое
спасибо. Но вот сейчас появляеться другая ошибка. Когда я нажимаю добавить, и когда добавляю что-то в DataGridView, а также когда я сохраняю что-то иногда появляеться ошибка в Me.TableAdapterManager.UpdateAll(Me.имяDataSet1).Обновление требует действительного DeleteCommand при передаче коллекции DataRow с удаленных строк. И почему-то все работает нормально, только в этом месте всегда появляеться ошибка.Помогите пожайлуста. спасибо заранее!!!!! Пользовательский контрол - в состав DataTable @Scryaga 13.03.2012 13:57 Подскажите, пожалуйста, как мне реализовать возможность включения пользовательского контрола в состав DataTable, источником которого является DataGridView? Пользовательский контрол представляет класс, описывающий свойства и алгоритм "поведения" DateTimePicker". Например, включить его в состав коллекции колонок DGV - не вижу препятствий, в состав dt - не представляю как выкрутиться. Whith dgv Dim cellPhoto As New DataGridViewImageColumn() calendar = New CalendarColumn()'Тот самый пользовательский контрол Dim name As New DataGridViewTextBoxColumn() Dim note As New DataGridViewTextBoxColumn() cellPhoto.Name = "Фото" calendar.Name = "Дата" name.Name = "Имя" note.Name = "Заметка" .Columns.Add(cellPhoto) .Columns.Add(calendar) .Columns.Add(name) .Columns.Add(note) cellPhoto.Width = 250 calendar.Width = 220 note.Width = 250 name.Width = 250 cellPhoto.ImageLayout = DataGridViewImageCellLayout.Normal .RowHeadersDefaultCellStyle.BackColor = Color.Blue End Whith Ответ #1 @Aleksey Nemiro 13.03.2012 14:52 ...включения пользовательского контрола в состав DataTable, источником которого является DataGridView?У DataTable не может быть источника, он сам источник. DataTable не является элементом управления, не прорисовывается, и не принадлежит Windows Forms. Класс DataTable может использоваться во всех других технологиях, базирующихся на .NET: ASP .NET, WPF, Silverlight, и т.п. Сделать так, чтобы в DataTable был календарь, который потом волшебным образом сам прорисовывался в DataGridView - невозможно. DataTable может содержать только данные: текстовые, бинарные, числа, даты и время. включить его в состав коллекции колонок DGV - не вижу препятствийТолько так и нужно делать. Создать класс - колонку, на уровне DataGridView, которая будет обрабатывать полученные из источника (в данном случае - DataTable) данные и прорисовывать себя в DataGridView. Ответ #2 @Scryaga 13.03.2012 15:50 Спасибо, Алексей! Я был не прав. Загвоздка с передачей параметра через URL path @fareastaz 12.03.2012 11:50 Здравствуйте, я создаю личный блог на asp.net используя webforms model (не MVC) и у меня возникала загвоздка с передачей параметра через URL path. Задача в общих словах: страница блога (blog-main.aspx) содержит превьюхи постов (тизеры). Тизер стандартный: заголовок, дата,
картинка, текст тизера, под ним- "читать далее..." Заголовок, картинка и "читать далее" представлены в виде ссылок на основную статью. Как я понимаю надо использовать '?id= c первичным ключом таблицы в свойствах PostBackUrl и NavigateUrl. Текст Presentation Page: <asp:Content ID="Content2" ContentPlaceHolderID="cphEntry" Runat="Server"> <asp:Repeater ID="rptMain" runat="server" > <ItemTemplate> <div class="post no-bg"> <h3><asp:LinkButton ID="lbTeaserTitle" runat="server" text='<%#Eval("Title")%>' PostBackUrl='~/blog-post.aspx' CommandArgument='<%#Eval("EntryID")%>' /></h3> <asp:Label ID="lblCreated" runat="server" Text='<%#Eval("Created")%> ' CssClass="post-info" /> <p> <asp:HyperLink ID="hplTeaserPic" runat="server" ImageUrl='<%#Eval("TeaserPic")%>' NavigateUrl='~/blog-post.aspx' CssClass="float-left" /> <asp:Label ID="lblTeaserText" runat="server" Text='<%#Eval("TeaserTXT")%>' /> </p> <p> <asp:LinkButton ID="lbTeaserRead" runat="server" text="ReadMore" PostBackUrl='~/blog-post.aspx' CommandArgument='<%#Eval("EntryID")%>' /> </p> </div> </ItemTemplate> </asp:Repeater> </asp:Content> где blog-post.aspx это страница основной статьи Code Behind Page: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class blog_main : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { DataClassesDataContext _objNewDC = new DataClassesDataContext(); using (_objNewDC) { var allTeasers = _objNewDC.Blog_entries.Select(x => x); rptMain.DataSource = allTeasers; rptMain.DataBind(); } } } В решении использую и LINQ и одну таблицу MSsql для постов. EntryID это primary key именно его и хочу передать в качестве параметра в url. на страницу главного поста - blog-post.aspx. На ней же разместить asp контролы для вывода самой статьи на основании переданного параметра EntryID. Уважаемые разработчики, подскажите пожалуйста как это сделать. Ответ #1 @Aleksey Nemiro 12.03.2012 14:27 Вопрос до конца не понял, но если проблема в том, чтобы добавит параметр к url, то сделать это можно так: <asp:HyperLink ID="hplTeaserPic" runat="server" ImageUrl='<%#Eval("TeaserPic")%>' NavigateUrl='<%#String.Format("~/blog-post.aspx?id={0}", Eval("id"))%>' CssClass="float-left" /> Еще можно добавить обработчик ItemDataBound к Repeater и в нем, через FindControll, искать нужные элементы и изменять их. Например: protected void Repeater1_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e) { if (e.Item.ItemType != ListItemType.Item && e.Item.ItemType != ListItemType.AlternatingItem) return; ((HyperLink)e.Item.FindControl("hplTeaserPic")).NavigateUrl += "?id=" + e.Item.DataItem["id"].ToString(); } LinkButton - лучше не использовать, т.к. они делают postback. В плане поисковой оптимизации (SEO) это будет плохо, да и для пользователей неудобно. Ответ #2 @fareastaz 13.03.2012 03:20 Алексей
огромное вам спасибо! Я в ASP.Net новичек, поэтому возникают много вопросов. Скажите а для чего в этой строчке передавать 0 в фигурные скобки "~/blog-post.aspx?id={0}", Eval("id"))%>' , это что-то вроде создание массива? Сделал по первому способу добавив на страницу основного поста след код перехвата id (не слишком ли мудреный способ?): protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) _PageRebind(); } /*================= * Private Functions * ==============*/ private void _PageRebind() { LinqClass _linq = new LinqClass(); if (Request.QueryString["id"] != null) { string id = Request.QueryString["id"] as String; rptPost.DataSource = _linq.GetPostByID(int.Parse(id)); rptPost.DataBind(); } } Еще есть вопрос по поводу репитера на основной странице поста (на ту куда ведет ссылка со страницы тизера). Я использовал для отображения записи поста элемент asp:Repeater, но если логически подумать, репитер обычно используется для отображения записей из таблицы которые повторяются (к примеру список тизеров, категории итд) но на самой страницы поста он же в принципе не нужен так как на страница поста выводит только один пост согласно переданному id. Так вот каким образом можно избавиться от репитера и передать значения полей из базы данных напрямую в Лейблы? Или репитер это единственный способ? Для отображения страницы поста использую следующий код: <asp:Content ID="post" ContentPlaceHolderID="cphEntry" Runat="Server"> <asp:Repeater ID="rptPost" runat="server"> <ItemTemplate> <div class="post no-bg"> <h3><asp:Label ID="lblTitle" runat="server" Text='<%#Eval("Title")%>' /></h3> <asp:Label ID="lblCreated" runat="server" Text='<%#Eval("Created")%> ' CssClass="post-info" /> <asp:Label ID="lblPost" runat="server" Text='<%#Eval("FullText")%>' /> </div> </ItemTemplate> </asp:Repeater> </asp:Content> для выборки из базы создал дополнительный класс где поместил пару LINQ функций: using System; using System.Collections.Generic; using System.Linq; using System.Web; public class LinqClass { DataClassesDataContext _objNewDC = new DataClassesDataContext(); public IQueryable<Blog_page> GetPageByID(int _id) { var allpages = _objNewDC.Blog_pages.Where(x => x.PageID == _id).Select(x => x); return allpages; } public IQueryable<Blog_entry> GetPostByID(int _id) { var post = _objNewDC.Blog_entries.Where(x => x.EntryID == _id).Select(x => x); return post; } } Ответ #3 @Aleksey Nemiro 13.03.2012 10:56 Скажите а для чего в этой строчке передавать 0 в фигурные скобки "~/blog-post.aspx?id={0}", Eval("id"))%>' , это что-то вроде создание массива?это для функции String.Format, которая принимает следующие параметры: format - строка с указанием формата вывода; args - массив аргументов. Фигурные скобки, указанные в строке (format) будут заменены на значения args. Количество фигурных скобок в строке должно соответствовать количеству параметров (args). Отсчет начинается с нуля. В данном случае String.Format("~/blog-post.aspx?id={0}", Eval("id")) {0} будет заменен на Eval("id"). Сделал по первому способу добавив на страницу основного поста след код перехвата id (не слишком ли мудреный способ?)Можно проще: int id = 0; if(int.TryParse(Request.QueryString["id"], out id) && id > 0) { rptPost.DataSource = _linq.GetPostByID(id); rptPost.DataBind(); } Так вот каким образом можно избавиться от репитера и передать значения полей из базы данных напрямую в Лейблы?Получать из IQueryable<Blog_entry>, в зависимости от структуры этого класса/коллекции. Можно посмотреть в режиме отладки, из чего он сделан и какие данные содержит. Вот тут показано, как во время отладки просматривать переменные/объекты в Visual Studio. LINQ практически не пользуюсь, разбираться нет времени, так что ничего не скажу. Или репитер это единственный способ?Его для таких целей обычно не используют. Ответ #4 @fareastaz 13.03.2012 15:09 Благодарю
за подробное объяснение! Поможем программисту ASP, PHP начать бизнес! @LuDMiLLA 11.03.2012 03:06 Корпорация из США (Сан Хосе, Силиконовая долина) расширяет три бизнес-проекта. Расширение производится на территории Европы и в странах бывшего СССР. Требуются толковые программисты (ASP, PHP) с административным мышлением. В процессе работы возможны коммандировки и стажировки в головной организации в США с последующим предоставлением визы L-1 (внутрикорпоративный перевод) для постоянного проживания в США. Контакт через Skype: ok4733 С уважением, Людмила (официальный представитель корпорации). DataGridView @rusiko 09.03.2012 22:11 Привет. Я постараюсь быть короче и понятнее. Как сделать так чтоб когда в TextBox пишется число, то после нажатия на Button это число отражалось в одном из полей DataGridView в Visual Basic 2010. БД на SQL. Спасибо Ответ #1 @Aleksey Nemiro 10.03.2012
11:11 Я постараюсь быть короче и понятнее.Краткость не всегда хороша. У меня миллион ответов на этот вопрос, а время есть только на пару из них. DataGridView не обязательно должен быть связан с базой или другим источником данных, это обычный, самодостаточный, элемент управления. Добавить в DataGridView введенные в TextBox данные можно так: Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 'создать новую колонку DataGridView1.Columns.Add(New DataGridViewTextBoxColumn() With {.HeaderText = "число"}) End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 'добавить строку из TextBox1.Text в DataGridView DataGridView1.Rows.Add(TextBox1.Text) TextBox1.Text = "" End Sub Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 'добавляем колонку DataGridView1.Columns.Add(New DataGridViewTextBoxColumn() With {.HeaderText = "число"}) 'добавляем несколько строк Dim r As New Random(Date.Now.Millisecond) For i As Integer = 1 To 5 DataGridView1.Rows.Add(r.Next(0, 1000).ToString()) Next End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click If DataGridView1.CurrentCell Is Nothing Then MsgBox("Выберите ячейку!") End If 'меняем в выбранной ячейке значение, на указанное в текстовом поле DataGridView1.CurrentCell.Value = TextBox1.Text TextBox1.Text = "" End Sub Что касается работы с базой, то это отдельная тема. Обновление базы, на основе последнего примера, может выглядеть так: Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click If DataGridView1.CurrentCell Is Nothing Then MsgBox("Выберите ячейку!") End If 'меняем в выбранной ячейке значение, на указанное в текстовом поле DataGridView1.CurrentCell.Value = TextBox1.Text TextBox1.Text = "" 'обновить данные в базе Using myConn As New SqlConnection("строка соединения с базой данных SQL Server") myConn.Open() Dim myCmd As New SqlCommand("UPDATE [таблица] SET [поле] = @field WHERE [идентификатор] = @id", myConn)'запрос нужно указывать свой, на основе структуры таблицы бд myCmd.Parameters.Add("@field", SqlDbType.Float).Value = CType(TextBox1.Text, Double) 'число myCmd.Parameters.Add("@id", SqlDbType.Int).Value = 1 'уникальный числовой идентификатор строки данных myCmd.ExecuteNonQuery() End Using End Sub Исходные кодыWPF List ImagesVisual Basic .NET: Графика @Shark1 15.03.2012 02:47 Пример загрузки изображений в элемент ListBox с отображением выделенного изображения в элементе Label. К данном исходному коду прилагаются файлы примеров. Скачать. RSS FeedVisual Basic .NET: Готовые решения @[i]Pro 09.03.2012 23:21 Простенькая RSS читалка, написана с использованием .NET Framework 4 и дополнительной библиотекой xNet для загрузки и парсинга RSS ленты.Imports xNet.Text.StringHelper Imports System.Text Imports System.Net Public Class Feed Public URL As String Public RSS(500) As RSSFeed Dim Links() As String Dim Titles() As String Dim Description() As String Public Structure RSSFeed Dim URL As String Dim Title As String Dim Description As String End Structure Public Sub SubStr(ByVal source As String) Links = source.Substrings("<link>", "</link>") Titles = source.Substrings("<title>", "</title>") 'Description = source.Substrings("<description>", "</description>") End Sub Public Function GetSource() Return xNet.Net.HttpClient.GetText(URL) End Function Public Sub Sort() For i = 0 To Links.Length - 1 RSS(i).URL = Links(i) RSS(i).Title = Titles(i) 'RSS(i).Description = Description(i) Next End Sub End Class К данном исходному коду прилагаются файлы примеров. Скачать. Вакансии в ITРазработчик баз данныхРоссия, Москва | Работа в офисе | 80 000.00 RUB HTML5 разработчикРоссия, Москва | Работа в офисе | 50 000.00 RUB Разработчик . NETРоссия, Москва | Работа в офисе ПрограммистРоссия, Москва | Работа в офисе | 35 000.00 RUB ПрограммистРоссия, Москва | Работа в офисе | 70 000.00 RUB Программист DelphiРоссия, Москва | Работа в офисе ПрограммистРоссия, Москва | Работа в офисе | 3 000.00
USD Программист приложения АпсторРоссия, Москва | Работа в офисе Ведущий программист, руководитель проектовРоссия, Москва | Работа в офисе | 90 000.00 RUB ПрограммистРоссия, Москва | Работа в офисе | 60 000.00 RUB Все вакансии в IT · Новости мира ITВ Microsoft говорят о создании сверхскоростного сенсорного дисплеяВ исследовательском подразделении корпорации Microsoft работают над новым поколением сенсорных экранов, способных практически мгновенно реагировать на прикосновения пальцев. По словам разработчиков новинки, подавляющее большинство современных электронных устройств имеют на сегодня сенсорные экраны, реагирующие на прикосновения с задержками. Иногда такие задержки могут быть видны невооруженным глазом и для некоторых программ, например для рисования, они неудобны. В Microsoft Applied Science Group говорят, что создали прототип экрана, который имеет минимальную задержку реакции на прикосновение пользователя - всего около одной миллисекунды. На практике такая задержка не заметна для пользователей и открывает новые сферы применения планшетов и сенсорных устройств.
15.03.2012 11:28 · Категория: Железо · Источник: CyberSecurity.ru Анонсирован Android-смартфон за 2800 евроШвейцарский производитель часов TAG Heuer представил смартфон Racer ценой в 2800 евро. Аппарат поступит в продажу в июне. Корпус устройства изготовлен из резины, углеродного волокна и титана. Racer работает на базе Android, но ни одной технической характеристики аппарата TAG Heuer пока не называет. 15.03.2012 11:26 · Категория: Железо · Источник: Lenta.ru Новый троянец-блокировщик вымогает у пользователей платные SMSКомпания «Доктор Веб» предупредила о появлении нового троянца-блокировщика Trojan.Winlock.5729. Особенность этой программы-вымогателя заключается в том, что она блокирует операционную систему, используя штатные средства Windows, путем изменения пароля локальных пользователей.
Традиционно программы-вымогатели используют для блокировки входа в операционную систему специальное приложение, заменяющее собой стандартную оболочку (shell) Windows или файл userinit.exe и демонстрирующее на экране компьютера соответствующий текст. Одновременно вредоносная программа обычно отслеживает и предотвращает запуск различных вспомогательных утилит, таких как Диспетчер задач, Командная строка, Редактор реестра и т. д. Совершенно по иному, гораздо более простому, но весьма оригинальному пути пошли авторы
Trojan.Winlock.5729. 15.03.2012 11:26 · Категория: Безопасность · Источник: CyberSecurity.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. |
В избранное | ||