将数据显示到gridview中 [英] Displaying data into gridview

查看:51
本文介绍了将数据显示到gridview中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的设计如下



离开类型ddlleavetype

从日期txtdate(文本框)

到期日txttodate(文本框)

应用日期txtapplied(文本框)

原因txtReason(文本框)



i我在上面显示下拉列表和文本框值到gridview



我的代码如下



protected void btnview_Click(object sender,EventArgs e)

{

DataTable dt = new DataTable();

DataColumn dc1 = new DataColumn(LeaveType);

DataColumn dc2 = new DataColumn(FromDate);

DataColumn dc3 = new DataColumn(ToDate);

DataColumn dc4 = new DataColumn(AppliedOn );

DataColumn dc5 = new DataColumn(Reason);



dt.Columns.Add(dc1);

dt.Columns.Add(dc2);

dt.Columns.Add(dc3) ;

dt.Columns.Add(dc4);

dt.Columns.Add(dc5);



DataRow dr1 = dt.NewRow();

dr1 [LeaveType] = ddlleavetype.SelectedValue.ToString();

dr1 [FromDate] = txtDate。文字;

dr1 [ToDate] = txttodate.Text;

dr1 [AppliedOn] = txtapplied.Text;

dr1 [ Reason] = txtreason.Text;

dt.Rows.Add(dr1);

GridView1.DataSource = dt;

GridView1。 DataBind();

}



当我点击按钮运行上面的代码时,

在gridview文本框值中未显示在gridview中。它在gridview中显示为空。



我的上述代码中的错误是什么



我尝试了什么:



解决方案

假设你的 TextBox DropDown 控件在GridView之外。下面是一个如何根据服务器控件值在 GridView 中添加行的示例:



ASPX

 <   asp:TextBox     ID   =  TextBox1    runat   =  server  /  >  
< asp:TextBox ID = TextBox2 runat = server / >
< span class =code-keyword>< asp:TextBox ID = TextBox3 runat = server / >
< ; asp:按钮 ID = Button1 runat = server 文本 = 按钮 OnClick = Button1_Click / >
< asp:GridView < span class =code-attribute> ID = GridView1 runat = server >
< / asp:GridView >





背后的代码:



  //  一种方法将基于TextBox  
// 值绑定GridView并在帖子后面保留其值。

private void BindGrid( int rowcount)
{
DataTable dt = new DataTable();
DataRow博士;
dt.Columns.Add( new System.Data.DataColumn( TextBox1Column typeof String )));
dt.Columns.Add( new System.Data.DataColumn( TextBox2Column typeof String )));
dt.Columns.Add( new System.Data.DataColumn( TextBox3Column typeof String )));

if (ViewState [ CurrentData]!= null
{
for int i = 0 ; i < rowcount + 1 ; i ++)
{
dt =(DataTable)ViewState [ CurrentData];
if (dt.Rows.Count > 0
{
dr = dt.NewRow();
dr [ 0 ] = dt.Rows [ 0 ] [ 0 ]的ToString();

}
}
dr = dt.NewRow();
dr [ 0 ] = TextBox1.Text;
dr [ 1 ] = TextBox2.Text;
dr [ 2 ] = TextBox3.Text;
dt.Rows.Add(dr);

}
else
{
dr = dt.NewRow();
dr [ 0 ] = TextBox1.Text;
dr [ 1 ] = TextBox2.Text;
dr [ 2 ] = TextBox3.Text;

dt.Rows.Add(dr);

}

// 如果ViewState有数据则使用值为DataSource
如果(ViewState [ CurrentData]!= null
{
GridView1.DataSource =(DataTable)ViewState [< span class =code-string>
CurrentData];
GridView1.DataBind();
}
其他
{
// < span class =code-comment>使用DataTable中关联的初始数据绑定GridView
GridView1.DataSource = dt;
GridView1.DataBind();

}
// 将DataTable存储在ViewState中以保留值
ViewState [ CurrentData] = dt;

}

受保护 void Button1_Click(< span class =code-keyword> object sender,EventArgs e)
{
// 检查ViewState是否有相关的数据。如果
if (ViewState [ CurrentData]!= null
{
DataTable dt =(DataTable)ViewState [ CurrentData];
int count = dt.Rows.Count;
BindGrid(伯爵);
}
其他
{
BindGrid( 1 );
}
TextBox1.Text = string .Empty;

TextBox1.Focus();
}





如果您的服务器控件在GridView中并且您想要动态生成行,那么这是一个完整的步骤 - 我几年前写的一个例子: https://www.codeproject.com/Articles/1109899/Dynamically-Adding-and-Deleting-Rows-in-GridView-a


My Design as follows

Leave Type ddlleavetype
From Date txtdate (textbox)
To Date txttodate (textbox)
Applied date txtapplied (textbox)
Reason txtReason (textbox)

i am displaying above dropdownlist and textbox value to gridview

My code as follows

protected void btnview_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
DataColumn dc1 = new DataColumn("LeaveType");
DataColumn dc2 = new DataColumn("FromDate");
DataColumn dc3 = new DataColumn("ToDate");
DataColumn dc4 = new DataColumn("AppliedOn");
DataColumn dc5 = new DataColumn("Reason");

dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
dt.Columns.Add(dc3);
dt.Columns.Add(dc4);
dt.Columns.Add(dc5);

DataRow dr1 = dt.NewRow();
dr1["LeaveType"] = ddlleavetype.SelectedValue.ToString();
dr1["FromDate"] = txtDate.Text;
dr1["ToDate"] = txttodate.Text;
dr1["AppliedOn"] = txtapplied.Text;
dr1["Reason"] = txtreason.Text;
dt.Rows.Add(dr1);
GridView1.DataSource = dt;
GridView1.DataBind();
}

when i run the above above code when i click the button,
in gridview textbox values not showing in gridview. It shows the empty in gridview.

What is the mistake in my above code

What I have tried:

.

解决方案

Assuming that your TextBox and DropDown controls are outside GridView. Here's an example how to add rows in GridView based from server control values:

ASPX

<asp:TextBox ID="TextBox1" runat="server"/>
<asp:TextBox ID="TextBox2" runat="server"/>
<asp:TextBox ID="TextBox3" runat="server"/>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
<asp:GridView ID="GridView1" runat="server" >
</asp:GridView>



CODE BEHIND:

//A method that will bind GridView based on the TextBox 
//values and retain its values on post backs.

private void BindGrid(int rowcount)
{
        DataTable dt = new DataTable();
        DataRow dr;
        dt.Columns.Add(new System.Data.DataColumn("TextBox1Column", typeof(String)));
        dt.Columns.Add(new System.Data.DataColumn("TextBox2Column", typeof(String)));
        dt.Columns.Add(new System.Data.DataColumn("TextBox3Column", typeof(String)));
 
        if (ViewState["CurrentData"] != null)
        {
            for (int i = 0; i < rowcount + 1; i++)
            {
                dt = (DataTable)ViewState["CurrentData"];
                if (dt.Rows.Count > 0)
                {
                    dr = dt.NewRow();
                    dr[0] = dt.Rows[0][0].ToString();
 
                }
            }
            dr = dt.NewRow();
            dr[0] = TextBox1.Text;
            dr[1] = TextBox2.Text;
            dr[2] = TextBox3.Text;
            dt.Rows.Add(dr);
 
        }
        else
        {
            dr = dt.NewRow();
            dr[0] = TextBox1.Text;
            dr[1] = TextBox2.Text;
            dr[2] = TextBox3.Text;
 
            dt.Rows.Add(dr);
 
        }
 
        // If ViewState has a data then use the value as the DataSource
        if (ViewState["CurrentData"] != null)
        {
            GridView1.DataSource = (DataTable)ViewState["CurrentData"];
            GridView1.DataBind();
        }
        else
        {
        // Bind GridView with the initial data assocaited in the DataTable
            GridView1.DataSource = dt;
            GridView1.DataBind();
 
        }
        // Store the DataTable in ViewState to retain the values
        ViewState["CurrentData"] = dt;
 
    }

 protected void Button1_Click(object sender, EventArgs e)
 {
        // Check if the ViewState has a data assoiciated within it. If
        if (ViewState["CurrentData"] != null)
        {
            DataTable dt = (DataTable)ViewState["CurrentData"];
            int count = dt.Rows.Count;
            BindGrid(count);
        }
        else
        {
            BindGrid(1);
        }
        TextBox1.Text = string.Empty;
 
        TextBox1.Focus();
}



In case your server controls are within GridView and you want to generate rows dynamically, then here's a complete step-by-step example that I wrote a few years ago:
https://www.codeproject.com/Articles/1109899/Dynamically-Adding-and-Deleting-Rows-in-GridView-a


这篇关于将数据显示到gridview中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆