如何手动在gridview中插入值。实际上这是我的问题。<virtual-host>
根据textboxes
列动态生成。例如,如果gridview列为4,则动态生成4 gridview
。当我想要用户在4 textboxes
中插入值并按textboxes
按钮然后在第一行的submit
中插入值时,我想要。再次在gridview
中插入值,然后按提交然后按在textboxes
中插入了第二行。请记住gridview
列是动态的。没有关于header的想法。我们可以通过使用loop在gridview
中插入值。我可以这样做。
这是我的屏幕截图
我们不能用户头。我再次告诉你。我使用循环来插入值gridview
这只是我的猜测我不知道。抱歉英语不好。
这是我的保存按钮代码:后面的代码
gridview.[0][0],gridview[0][1]
答案 0 :(得分:0)
您可以使用JavaScript将输入的行数据保存到HiddenField
,然后使用它的值将新行添加到代码隐藏中的网格数据源。
<强> JS 强>
function setRowData() {
var hdn1 = document.getElementById('hdn1');
var gv1 = document.getElementById('gv1');
var cols = gv1.rows[0].cells;
for (var i = 0; i < cols.length; i++) {
var col = cols[i].innerHTML; // column name
var tb = document.getElementById(col); // Column1, Column2, ...
hdn1.value += col + ':' + tb.value; // key:value pair
hdn1.value += '~'; // separator
}
// remove separator at the end
hdn1.value = hdn1.value.substring(0, hdn1.value.length - 1);
}
<强> C#强>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGrid();
}
}
private void BindGrid()
{
DataTable dt;
if (Session["dt"] != null) // Submit
{
dt = Session["dt"] as DataTable;
}
else // !IsPostBack
{
dt = GetSampleData();
}
gv1.DataSource = dt;
gv1.DataBind();
GenerateTextBoxes(dt);
Session["dt"] = dt;
}
protected void Submit_Click(object sender, EventArgs e)
{
string[] keyValue;
var dt = Session["dt"] as DataTable;
var dr = dt.NewRow();
var data = hdn1.Value; // JS set this as "Column1:value1~Column2:value12"
var pairs = data.Split('~');
foreach (var pair in pairs)
{
keyValue = pair.Split(':');
dr[keyValue[0]] = keyValue[1];
}
dt.Rows.Add(dr);
hdn1.Value = null;
Session["dt"] = dt;
BindGrid();
}
private void GenerateTextBoxes(DataTable dt)
{
foreach (DataColumn col in dt.Columns)
{
pn1.Controls.Add(new TextBox { ID = col.ColumnName });
}
}
private DataTable GetSampleData()
{
var dt = new DataTable();
dt.Columns.Add("Column1", typeof(string));
dt.Columns.Add("Column2", typeof(string));
var dr = dt.NewRow();
dr["Column1"] = "Think 2ce";
dr["Column2"] = "Code 1ce";
dt.Rows.Add(dr);
return dt;
}
<强> ASPX 强>
<asp:GridView runat="server" ID="gv1" />
<asp:Panel runat="server" ID="pn1">
<asp:HiddenField runat="server" ID="hdn1" />
</asp:Panel>
<asp:Button Text="Submit" runat="server" ID="btn1" OnClientClick="setRowData()" OnClick="Submit_Click" />