【问题标题】:Need help in gridview displaying data在显示数据的 gridview 中需要帮助
【发布时间】:2010-11-12 21:38:26
【问题描述】:

我想在 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();
}

请修改我的代码我的错误在哪里。

谢谢, 苏米特

【问题讨论】:

    标签: asp.net gridview


    【解决方案1】:

    点击按钮插入数据

    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 
    

    【讨论】:

      【解决方案2】:

      你需要在sql命令中使用SqlParameter。

      你缺少逻辑。首先,当表单加载时,您需要将完整的项目表数据绑定到您的网格,十您将有一个文本框和按钮来过滤网格。

      这是您的完整代码。用它。 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();
          }
       }
      

      【讨论】:

        【解决方案3】:

        这两个属性是互斥的(当你使用其中一个时,你不能使用另一个):

        1. DataSourceID 属性将与 DataSource 控件(ObjectDataSource、XmlDataSource、SqlDataSource 等)一起使用
        2. DataSource 属性将与自定义对象/自定义数据绑定一起使用。

        例子:

        1. 数据源ID

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

        在这种情况下,数据绑定会自动发生

        1. 数据源

          @asp:GridView ID="gv2" runat="server" %@

        在你后面的代码中会有这样的东西:

        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();
        }
        

        请注意,我使用了@而不是尖括号。

        【讨论】:

        • 不清楚您的答案是否会更具体。我正在使用 sqlserver2000 数据库。从 gridview 创建新的连接选项刚刚选择了表。之后我在页面后面的代码中编写了这段代码。
        【解决方案4】:

        您似乎想手动绑定数据源。从您的gridview 中删除设计视图中的DataSourceID 属性。应该是这样的:

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

        只需删除 DataSourceID="SqlDataSource1" 属性。

        【讨论】:

        • No....我的要求是我将从文本框中添加一些数据,单击添加按钮后它应该立即反映到网格视图。在我的代码之上。
        • 但是,您不能将数据与不同的数据源合并,请尝试在第一次请求时使用 DataBinding,在第二次请求时,尝试合并您的数据源。
        • 你在使用两个数据源吗?
        猜你喜欢
        • 2017-08-03
        • 1970-01-01
        • 1970-01-01
        • 2010-11-23
        • 2022-07-28
        • 1970-01-01
        • 1970-01-01
        • 2010-11-13
        • 1970-01-01
        相关资源
        最近更新 更多