Нужна помощь в отображении данных gridview - PullRequest
0 голосов
/ 22 июля 2009

Я хочу отобразить все данные в gridview, которые я вставляю во время выполнения. Для этого я написал код, но получил эту ошибку.

"И DataSource и DataSourceID определено в «GridView1». Удалить один определение. "

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        BindData();
    }
}

public void BindData()
{
     string str = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString.ToString();
     SqlConnection con = new SqlConnection(str);
     SqlDataAdapter da = new SqlDataAdapter("select * from Items where ItemId='" + TxtItemId.Text + "'", con);
     DataSet ds = new DataSet();
     da.Fill(ds,"Items");
     GridView1.DataSource = ds;         
     GridView1.DataBind();
}

Пожалуйста, измените мой код, где моя ошибка.

Спасибо, Sumit

Ответы [ 4 ]

1 голос
/ 22 июля 2009

Два свойства являются взаимоисключающими (при использовании одного из них вам не разрешено использовать другое):

  1. Свойство DataSourceID должно использоваться с элементом управления DataSource (ObjectDataSource, XmlDataSource, SqlDataSource и т. Д.)
  2. Свойство DataSource должно использоваться с пользовательскими объектами / пользовательской привязкой данных.

Примеры:

  1. DataSourceID

    @ asp: ObjectDataSource ID = "ods1" runat = "server" SelectMethod = "Test" TypeName = "TestBL" / @ @asp: GridView ID = "gv1" runat = "сервер" DataSourceID = "ods1" / @

в этом случае привязка данных происходит автоматически

  1. DataSource

    @ asp: GridView ID = "gv2" runat = "сервер"% @

и в коде позади вас будет что-то вроде этого:

overrides void OnLoad(..)
{
    List<DataObject> source = new List<DataObject>();
    source.Add(new DataObject(..));
    source.Add(new DataObject(..));
    source.Add(new DataObject(..));
    gv2.DataSource = source;
    gv2.DataBind();
}

Обратите внимание, что я использовал @ вместо угловых скобок.

0 голосов
/ 14 января 2015

Для вставки данных по нажатию кнопки

SqlConnection con = new SqlConnection("connection string");
        SqlDataAdapter myadp = new SqlDataAdapter();
        myadp.InsertCommand = new SqlCommand();
        myadp.InsertCommand.Connection = con;
        con.Open();
        myadp.InsertCommand.CommandText = "insert into number values(@Silver)";
        myadp.InsertCommand.Parameters.AddWithValue("@Silver", TextBox10.Text);
        int i = myadp.InsertCommand.ExecuteNonQuery();
        if (i == 1)
        {
           // Response.Write("<script>alert('number updated sucessfully')</script>");
            Label2.Text = "Number updated sucessfully".ToString();
            TextBox10.Text = "";
        }
        else
        {
            //Response.Write("<script>alert('somthing went wrong try again')</script>");
            Label2.Text = "somthing went wrong try again".ToString();
        }
        con.Close();
        Responce.Redirect("your page.aspx");

Для отображения данных в виде сетки

SqlCommand command = new SqlCommand("SELECT * from number");
SqlDataAdapter da = new SqlDataAdapter(command);
DataTable dt = new DataTable();
da.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind(); 

поэтому общее кодирование будет

SqlConnection con = new SqlConnection("connection string");
        SqlDataAdapter myadp = new SqlDataAdapter();
        myadp.InsertCommand = new SqlCommand();
        myadp.InsertCommand.Connection = con;
        con.Open();
        myadp.InsertCommand.CommandText = "insert into number values(@Silver)";
        myadp.InsertCommand.Parameters.AddWithValue("@Silver", TextBox10.Text);
        int i = myadp.InsertCommand.ExecuteNonQuery();
        if (i == 1)
        {
           // Response.Write("<script>alert('number updated sucessfully')</script>");
            Label2.Text = "Number updated sucessfully".ToString();
            TextBox10.Text = "";
        }
        else
        {
            //Response.Write("<script>alert('somthing went wrong try again')</script>");
            Label2.Text = "somthing went wrong try again".ToString();
        }
        con.Close();
        Responce.Redirect("your page.aspx");
To display data on the grid view

    SqlCommand command = new SqlCommand("SELECT * from number");
    SqlDataAdapter da = new SqlDataAdapter(command);
    DataTable dt = new DataTable();
    da.Fill(dt);
    GridView1.DataSource = dt;
    GridView1.DataBind();



here the Responce.Redirect("your page.aspx"); will do the trick for you 
0 голосов
/ 26 октября 2013

Вам необходимо использовать SqlParameter с командой sql.

и вам не хватает логики. Во-первых, когда форма загружается в этот момент, вам нужно привязать полные данные таблицы элементов к своей таблице. Десять у вас будет текстовое поле и кнопка, где вы хотите отфильтровать таблицу.

Вот ваш полный код. Используй это. 100% работает.

    <div id = "dvFilterGrid">
       Filter Grid :  <asp:TextBox ID="txtFilter" runat="server"></asp:TextBox>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <asp:Button ID="btnFilterGrid" runat="server" Text="Find" 
            onclick="btnFilterGrid_Click" />
    </div>

и ваш код

public partial class _Default : System.Web.UI.Page
{
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ToString());
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindGridData();
        }
    }

    protected void BindGridData()
    {
        con.Open();
        using (SqlCommand cmd = new SqlCommand("Select * from Items", con))
        {
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);
            GridView1.DataSource = dt;
            GridView1.DataBind();
        }
    }

    protected void btnFilterGrid_Click(object sender, EventArgs e)
    {
        int ItemId = Convert.ToInt32(txtFilter.Text.Trim());
        FilterData(ItemId);
    }

    private void FilterData(int ItemId)
    {
        string query = "select * from Items where ItemId=@ItemId ";
         SqlCommand cmd = new SqlCommand(query,con);
         cmd.Parameters.Add(new SqlParameter("@ItemId", ItemId));
         SqlDataAdapter da = new SqlDataAdapter(cmd);
         DataSet ds = new DataSet();
         da.Fill(ds,"Items");
         GridView1.DataSource = ds;         
         GridView1.DataBind();
    }
 }
0 голосов
/ 22 июля 2009

Похоже, вы хотите связать свой источник данных вручную. Удалите свойство DataSourceID в режиме конструктора из вида сетки. Это должно быть что-то вроде этого:

<asp:GridView runat="server" ID="grid" DataSourceID="SqlDataSource1"></asp:GridView>

Просто удалите свойство DataSourceID = "SqlDataSource1".

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