взаимодействие набора данных и вида сетки (обновление данных) - PullRequest
0 голосов
/ 09 февраля 2012

Я довольно новичок в asp.net;просто хотел сообщить вам, ребята, прежде чем читать мой вопрос.Я создаю адресную книгу и использую набор данных для отображения данных из моей базы данных SQL в виде таблицы, которая находится на странице aspx.У меня есть этот код до сих пор

            SqlConnection conn = new SqlConnection(conectionstring);
            conn.Open();
            string sql = "SELECT * FROM Directorio";
            SqlDataAdapter myCommand = new SqlDataAdapter(sql, conn);
            DataSet ds = new DataSet();
            myCommand.Fill(ds);
            DataView source = new DataView(ds.Tables[0]);
            GridView1.DataSource = source;
            GridView1.DataBind();

Этот код получает данные из базы данных, заполняет набор данных и отображает их в виде сетки.У меня вопрос, как я могу внести изменения в gridview, а затем обновить набор данных, чтобы я мог применить изменения в базе данных SQL.Я нашел много учебников, но они делают вещи по-другому.они связывают базу данных с проектом и не кодируют ничего из этого, я хочу научиться делать это вручную.Я также попытался включить редактирование в свойствах gridview, которые создали столбец с кнопкой редактирования, но когда я нажимаю на него, приложение вылетает.спасибо мои коллеги-программисты:)

PS: я не понимаю архитектуру ADO.NET

Ответы [ 2 ]

1 голос
/ 09 февраля 2012

По сути, элемент управления источником данных нуждается в согласовании изменений, потому что он довольно сложен в контексте архитектуры asp.net.

Мне кажется, я знаю, откуда вы, и я полностью там был - выможет понравиться эта статья: http://msdn.microsoft.com/en-us/library/aa581776.aspx

0 голосов
/ 09 февраля 2012

у вас есть довольно много вариантов. Я предполагаю, что вы используете веб-формы и asp.net против asp.net MVC.

В зависимости от того, насколько надежен ваш проект или как вы планируете его реализовать, вы можете пойти несколькими путями. Если у вас есть слой доступа к данным, вы можете использовать EF (Entity Framework) для обработки поиска и отправки данных в базу данных. EF действительно хорош тем, что он обрабатывает множество операций CRUD для вас вне вашей веб-формы. Не полная абстракция, но она выводит sql из вашего кода в отдельный / управляемый уровень.

Если это небольшой проект или что-то, с чем вы просто играете, вы можете вставить данные обратно в таблицы, используя тот же ado / sql

public int CreateNewUser(string username, string password)
    {
        int insertUser = DatabaseUtilities.Perform_CRUD_Operation(
            String.Format(
                "INSERT INTO ContactsUser (UserName, Password) " +
                "VALUES ('{0}', '{1}',
                username, password),
            ConnectionString);
    }


//factored out the Perform operation for reuse in other classes you could do all this in one call 

public static int Perform_CRUD_Operation(string sqlStatement, string connectionString)
    {
        OleDbConnection con = new OleDbConnection("Provider=SQLOLEDB;" + connectionString);
        OleDbCommand cmd = new OleDbCommand(sqlStatement, con);

        try
        {
            con.Open();
            int affectedRows = cmd.ExecuteNonQuery();
            if (affectedRows == 1)
            {
                return 0;
            }
            else
            {
                return AFFECTED_ROWS_ERROR;
            }
        }
        catch (Exception)
        {
            return UNHANDLED_ERROR;
        }
        finally
        {
            con.Close();
        }
    } 

Это выше только пример. Если вы что-то делаете для производственного кода , я настоятельно рекомендую либо EF, либо использовать хранимые процедуры . Использование кода, описанного выше, хорошо для тестирования или проверки концепции, но он действительно уязвим для инъекций SQL и может быть очень небезопасным.

Что касается вида сетки без кода из пользовательского интерфейса или кода позади, было бы почти невозможно сделать предложение о том, что делать или где искать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...