Asp.net 为什么radgrid ItemCommand事件中的我的e.item始终为空
我使用RadGrid控件,创建了一组命令按钮,如插入、更新、保存和删除。当我点击insert按钮时,RadGrid可以进入insert模式,但当我在输入数据后点击save按钮时,e.item始终为空?如何在editmode/insermode中获取项的Radgrid值 以下是部分代码: asp: 提前谢谢。这可能会帮助您。。。 根据代码中注释的说明Asp.net 为什么radgrid ItemCommand事件中的我的e.item始终为空,asp.net,telerik,radgrid,Asp.net,Telerik,Radgrid,我使用RadGrid控件,创建了一组命令按钮,如插入、更新、保存和删除。当我点击insert按钮时,RadGrid可以进入insert模式,但当我在输入数据后点击save按钮时,e.item始终为空?如何在editmode/insermode中获取项的Radgrid值 以下是部分代码: asp: 提前谢谢。这可能会帮助您。。。 根据代码中注释的说明 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.Add("A");
for (int i = 0; i < 10; i++ )
dt.Rows.Add("1 " + i);
ViewState["Da"] = dt;
rg.DataSource = dt;
rg.DataBind();
}
}
protected void rg_ItemCommand(object sender, GridCommandEventArgs e)
{
// Check
if (e.CommandName == "SaveTrigger")
{
// Variable
string value = string.Empty;
TextBox txt = null;
// Check
if (e.Item is GridDataInsertItem)
{
// Set Init Insert Items
GridDataInsertItem item = e.Item as GridDataInsertItem;
// Get Textbox from Insert New Item
txt = item.FindControl("txt") as TextBox;
}
else
{
// This will get the first line of the Edit Item
GridEditableItem editItem = rg.EditItems[0] as GridEditableItem;
// Or
// This will get be using Index Number through the button which you press save
// GridDataItem editItem = rg.Items[e.Item.ItemIndex] as GridDataItem;
txt = editItem.FindControl("txt") as TextBox;
}
Response.Write(txt.Text.Trim());
}
}
protected void rg_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
rg.DataSource = ViewState["Da"] as DataTable;
}
受保护的无效页面加载(对象发送方,事件参数e)
{
如果(!IsPostBack)
{
DataTable dt=新的DataTable();
dt.列。添加(“A”);
对于(int i=0;i<10;i++)
dt.行。添加(“1”+i);
视图状态[“Da”]=dt;
rg.DataSource=dt;
rg.DataBind();
}
}
受保护的void rg_ItemCommand(对象发送方,GridCommandEventArgs e)
{
//检查
如果(e.CommandName==“SaveTrigger”)
{
//变数
字符串值=string.Empty;
TextBox txt=null;
//检查
如果(例如,项为GridDataInsertItem)
{
//设置初始插入项
GridDataInsertItem=e.项作为GridDataInsertItem;
//从“插入新项”获取文本框
txt=item.FindControl(“txt”)作为文本框;
}
其他的
{
//这将获得编辑项的第一行
GridEditableItem editItem=rg.EditItems[0]作为GridEditableItem;
//或
//这将通过按下save(保存)按钮使用索引号获得
//GridDataItem editItem=rg.Items[e.Item.ItemIndex]作为GridDataItem;
txt=editItem.FindControl(“txt”)作为文本框;
}
Write(txt.Text.Trim());
}
}
受保护的void rg_NeedDataSource(对象发送方,GridNeedDataSourceEventArgs e)
{
rg.DataSource=ViewState[“Da”]作为数据表;
}
谢谢。但它说争论超出了范围。“GridEditableItem editItem=rg.EditItems[0]作为GridEditableItem;”@HenryLee只是想知道您的项目是否处于编辑模式?也许您可以在RadGridLandBlock.EditItem.Count>0
上进行检查。。该错误意味着您的RadGridThank中没有可编辑项。我试过了。是0。但是“RadGridLandBlock.MasterTableView.IsItemInserted=true”确实使RadGrid的第一行处于插入模式。我怀疑插入/编辑模式是在客户端,而不是在数据源端,所以“e.item”不起作用?但是Radgrid是一个服务器控件,我认为insert/edit行中的值应该被提取。有什么帮助吗?编辑按钮的那部分可以。RadGridLandBlock.EditItem.Count=1。但“插入”按钮的部分仍然不起作用。@HenryLee正在睡觉,因为我最后一次回复是在晚上11点。。。我已经更新了答案。。你可以看看
protected void RadGridLandBlock_ItemCommand(object sender, GridCommandEventArgs e)
{
//insert btn clicked
if (e.CommandName == "InsertBtn")
{
LabelTest.Text = "insert btn from itemcommand is fired";
RadGridLandBlock.MasterTableView.IsItemInserted = true;
RadGridLandBlock.Rebind();
}
//Save btn clicked
if (e.CommandName=="SaveBtn")
{
LabelTest.Text = "SaveBtn from itemcommand is fired";
myCnn = new SqlConnection(myCnnstring);
myCnn.Open();
mysql = "insert into ld_landblock (PK_bookID,landblockname,capacityrate,pk_period,pk_userIDlasteditor) " +
" values(@pk_bookid, @landblockname,@capacityrate,@pk_period,@pk_userIDlasteditor)";
mycmd = new SqlCommand(mysql, myCnn);
GridEditFormItem editItem = e.Item as GridEditFormItem;
mycmd.Parameters.AddWithValue("@pk_bookid", Convert.ToInt32((editItem.FindControl("PK_BookID") as TextBox).Text));//HERE IS THE ERROR OCCURED)
mycmd.Parameters.AddWithValue.......
}
}
protected void RadGridLandBlock_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
// RadGridLandBlock.MasterTableView.IsItemInserted = false;
PK_bookID = Convert.ToInt32(ViewState["PK_BookID"]);
PK_period = Convert.ToInt32(ViewState["PK_Period"]);
(sender as RadGrid).DataSource = GetGridDatatable();
}
protected void RadGridLandBlock_ItemCreated(object sender, GridItemEventArgs e)
{
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.Add("A");
for (int i = 0; i < 10; i++ )
dt.Rows.Add("1 " + i);
ViewState["Da"] = dt;
rg.DataSource = dt;
rg.DataBind();
}
}
protected void rg_ItemCommand(object sender, GridCommandEventArgs e)
{
// Check
if (e.CommandName == "SaveTrigger")
{
// Variable
string value = string.Empty;
TextBox txt = null;
// Check
if (e.Item is GridDataInsertItem)
{
// Set Init Insert Items
GridDataInsertItem item = e.Item as GridDataInsertItem;
// Get Textbox from Insert New Item
txt = item.FindControl("txt") as TextBox;
}
else
{
// This will get the first line of the Edit Item
GridEditableItem editItem = rg.EditItems[0] as GridEditableItem;
// Or
// This will get be using Index Number through the button which you press save
// GridDataItem editItem = rg.Items[e.Item.ItemIndex] as GridDataItem;
txt = editItem.FindControl("txt") as TextBox;
}
Response.Write(txt.Text.Trim());
}
}
protected void rg_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
rg.DataSource = ViewState["Da"] as DataTable;
}