我创建了一个网格视图应用程序,并在我的模板之外我有一个添加新行按钮。当我添加一个新行时,它会被放入一个编辑和删除按钮。我想要做的是当我点击添加新行按钮时,我希望它在编辑模式下打开新行,因此不能添加空白行的空白信息。所以基本上如果我添加一个新的行,并不输入信息它不会被创建。避免添加空白的新行
如果我需要更详细的解释我的问题,请询问。
任何帮助将不胜感激。
谢谢
我创建了一个网格视图应用程序,并在我的模板之外我有一个添加新行按钮。当我添加一个新行时,它会被放入一个编辑和删除按钮。我想要做的是当我点击添加新行按钮时,我希望它在编辑模式下打开新行,因此不能添加空白行的空白信息。所以基本上如果我添加一个新的行,并不输入信息它不会被创建。避免添加空白的新行
如果我需要更详细的解释我的问题,请询问。
任何帮助将不胜感激。
谢谢
我最终找出我自己的问题。它现在工作完美。我也改变了数据库,但我提供了我的代码。我确定有一个更简单的方法,但这是我能做的最好的:如果你们能以更简单的方式提供输入,我将不胜感激。
protected void gv_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Insert") //- this is needed to explain that the INSERT command will only work when INSERT is clicked
{
gv.DataBind();
DataTable d = dbcon.GetDataTable("SELECT * FROM CIS.CIS_TRANS ORDER BY ID DESC", "ProjectCISConnectionString");
string transCode = "", fundCode = "", BSA_CD = "", DP_TYPE = "";
if (d.Rows.Count > 0)
{
transCode = d.Rows[0]["TRANS_CD"].ToString();
fundCode = d.Rows[0]["FUND_CD"].ToString();
BSA_CD = d.Rows[0]["BSA_CD"].ToString();
DP_TYPE = d.Rows[0]["DP_TYPE"].ToString();
if (transCode.Trim().Length > 0)
{
dbcon.Execute("INSERT INTO CIS.CIS_TRANS (TRANS_CD) VALUES('')", "ProjectCISConnectionString");
gv.DataBind();
}
}
gv.EditIndex = gv.Rows.Count - 1;
}
else if (e.CommandName == "Cancel")
{
DataTable d = dbcon.GetDataTable("SELECT * FROM CIS.CIS_TRANS ORDER BY ID DESC", "ProjectCISConnectionString");
string transCode = "";
if (d.Rows.Count > 0)
{
transCode = d.Rows[0]["TRANS_CD"].ToString();
if (transCode.Trim().Length == 0)
{
dbcon.Execute(string.Format("DELETE CIS.CIS_TRANS WHERE ID = '{0}'", d.Rows[0]["ID"]), "ProjectCISConnectionString");
gv.DataBind();
}
}
}
}
这是相当简单的,一旦你添加一行:
您需要设置新添加的行的编辑指数:
gv.EditIndex = gv.Rows.Count-1;
这是肮脏的代码,我只是告诉你我的意思,并相当快速地把它掀起来。 假设一个在网页上呼吁GridView1 GridView控件:
namespace HelpSO3
{
public partial class _Default : System.Web.UI.Page
{
List<string> t = new List<string>();
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string s = "hi";
t.Add(s);
GridView1.DataSource = t;
GridView1.DataBind();
Session["MyList"] = t;
}
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
t = (List<string>)Session["MyList"];
t.Add("Another String");
GridView1.DataSource = t;
GridView1.DataBind();
GridView1.EditIndex = GridView1.Rows.Count - 1;
GridView1.DataBind();
Session["MyList"] = t;
}
}
}
所以Button1_Click事件增加了一个新行值“另一个字符串”然后我们绑定网格视图和EditIndex
值设置为最新的行和重新绑定。它很简单。
你的情况,你的代码将变成:
protected void gv_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Insert") //- this is needed to explain that the INSERT command will only work when INSERT is clicked
{
dbcon.Execute("INSERT INTO PROJ_ASP (TRANS_CD) VALUES('')", "ProjectASPConnectionString");
gv.DataBind();
gv.EditIndex = gv.Rows.Count-1;
gv.DataBind();
}
}
这是什么平台 - Web,Winforms或WPF?更重要的是,到目前为止你尝试过了什么?你的问题并不意味着你在解决这个问题方面付出很多努力,这通常不会得到太多回应。 – 2012-07-25 15:27:58
这是一个Web应用程序。 – KKP 2012-07-25 15:29:38
@MichaelYounani - 你只需要新添加的行的索引并设置EditIndex属性,参见我的答案。 – JonH 2012-07-25 15:55:36