Tom Paul Heart Ответов: 1

Привязка данных к dropdownlist и selectedvalue с помощью C#


У меня есть два стола:

Категория : CatID, CatName
Новости : NewsID, CatID,Название,Содержание

Теперь я хочу, чтобы при редактировании в таблице новостей у меня был выпадающий список и привязка всех значений из категории таблицы и отображение SelectedValue previous

Пожалуйста, помогите мне

Что я уже пробовал:

try
                    {
                        SqlConnection conn = new SqlConnection(connStr);
                        SqlDataReader reader = null;
                 
                        conn.Open();
                        string sql = "SELECT  * FROM NEWS where NewsID= " + sid + "";
                      

                        SqlCommand comm = new SqlCommand();
                        comm.Connection = conn;
                        comm.CommandText = sql;

                        reader = comm.ExecuteReader();

                    while (reader.Read())
                     {
                            string Newsid = reader.GetValue(reader.GetOrdinal("Newsid")).ToString();
                            string CatID = reader.GetValue(reader.GetOrdinal("CatID")).ToString();
                            
                            string Title = reader.GetValue(reader.GetOrdinal("Title")).ToString();
                            string Content = reader.GetValue(reader.GetOrdinal("Content")).ToString();
                           


                           

                            if (Newsid != "")
                         {

                            
                             SqlDataReader reader = null;
                             string sql = "SELECT  CatID, CatName FROM Category  order by Catid desc";

                             SqlCommand comm = new SqlCommand();
                             comm.Connection = conn;
                             comm.CommandText = sql;
                             reader = comm.ExecuteReader();
                            
                             while (reader.Read())
                             {
                                 string CatID_root = reader.GetValue(reader.GetOrdinal("CatID")).ToString();
                                 string CatName = reader.GetValue(reader.GetOrdinal("CatName")).ToString();
                               
                                
                                 if (CatID_root == CatID)
                                 {
                                    
                                     Dropdownlist.DataSource = reader;
                                     Dropdownlist.DataValueField = "CatID";
                                     Dropdownlist.DataTextField = "CatName";
                                     Dropdownlist.SelectedValue = CatName;                                   
                                     Dropdownlist.DataBind();
                                    
                                    
                                 }
                                 else
                                 {
                                     Dropdownlist.DataSource = reader;
                                     Dropdownlist.DataValueField = "id";
                                     Dropdownlist.DataTextField = "bulkname";
                                     Dropdownlist.DataBind();
                                    

                                 }

                             }

                         }
                    } 

Gerry Schmitz

Так что никакого кода. Никакой платформы. Не помочь.

Tom Paul Heart

мой код:

пробовать
{
SqlConnection conn = новый SqlConnection(connStr);
SqlDataReader reader = null;

Коннектикут.Открыть();
строка sql = "SELECT * FROM NEWS where NewsID=" + sid + "";


Sqlcommand, который комми = новый sqlcommand, который();
связь.Соединение = conn;
связь.CommandText = sql;

читатель = комм.Метода executereader();

в то время как (читатель.читать())
{
строка Newsid = reader.GetValue(читатель.GetOrdinal("Newsid")).Метод toString();
строка CatID = reader.GetValue(читатель.GetOrdinal("CatID")).Метод toString();

заголовок строка = читатель.GetValue(читатель.GetOrdinal("Название")).Метод toString();
содержимое строки = читатель.GetValue(читатель.GetOrdinal("Содержание")).Метод toString();





если (Newsid != "")
{


SqlDataReader reader = null;
строка SQL = "выберите идентификатор catid, CatName от того, категория по убыванию catid с";

Sqlcommand, который комми = новый sqlcommand, который();
связь.Соединение = conn;
связь.CommandText = sql;
читатель = комм.Метода executereader();

в то время как (читатель.читать())
{
строка CatID_root = reader.GetValue(читатель.GetOrdinal("CatID")).Метод toString();
строка CatName = reader.GetValue(читатель.GetOrdinal("Кошачье Имя")).Метод toString();


если (CatID_root == catid с)
{

Dropdownlist для.Источник данных = читатель;
Выпадающий список.DataValueField = "CatID";
Выпадающий список.DataTextField = "Имя Кошки";
Выпадающий список.SelectedValue = CatName;
Выпадающий список.Привязку();


}
еще
{
Dropdownlist для.Источник данных = читатель;
Выпадающий список.DataValueField = "id";
Выпадающий список.DataTextField = "bulkname";
Выпадающий список.Привязку();


}

}

}
}

Gerry Schmitz

https://stackoverflow.com/questions/20698562/populate-dropdownlist-with-datareader-from-database

RickZeeland

https://www.codeproject.com/Articles/24656/A-Detailed-Data-Binding-Tutorial

Richard Deeming

string sql = "SELECT  * FROM NEWS where NewsID= " + sid + "";

Ваш код почти наверняка уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.

Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]
const string sql = "SELECT * FROM NEWS where NewsID = @NewsID";
SqlCommand comm = new SqlCommand();
comm.Connection = conn;
comm.CommandText = sql;
comm.Parameters.AddWithValue("@NewsID", sid);

1 Ответов

Рейтинг:
1

Sheila Pontes

Привет
Свойство SelectedValue позволяет выбрать значение поля CatID.

Измените свой код для этого:

Dropdownlist.SelectedValue = CatID;


Если вы хотите использовать поле CatName для поиска вашей записи в элементе управления, используйте этот код:
Dropdownlist.SelectedIndex = Dropdownlist.Items.IndexOf(Dropdownlist.Items.FindByText(CatName));


Теперь его окончательный код будет выглядеть так:

Dropdownlist.DataSource = reader;
Dropdownlist.DataValueField = "CatID";
Dropdownlist.DataTextField = "CatName";
Dropdownlist.DataBind();

Dropdownlist.SelectedValue = CatID;

or 

Dropdownlist.SelectedIndex = Dropdownlist.Items.IndexOf(Dropdownlist.Items.FindByText(CatName));


Надеюсь, я вам помог.