我把GridView放进Ajax中的UpdatePanel中,其中我在GridView最后一个字段加上了修改,删除2个LinkButton键
郁闷了,我点删除可以完成删除,但点修改必须点2次才可以进入修改界面。
我去掉UpdatePanel则没有问题所以我觉得问题在UpdatePanel这,但不知道在哪
另外,我取出数据库的数据放在GridView上,GridView我时间编辑了字段名称。这样数据取出来看的话更清晰。但是,我编辑的名称有的很长,这样在生成网页后他会换行,这样GridView就显得很胖,很难看,有没解决办法?就是下面这样名字 性别 年龄 家庭住址 (我希望是这样显示)名字 性别 年龄 家庭
地址 (但确实这样的,这样GridView就会很高,很胖的样子,很难看)求解答2个问题~~100分
郁闷了,我点删除可以完成删除,但点修改必须点2次才可以进入修改界面。
我去掉UpdatePanel则没有问题所以我觉得问题在UpdatePanel这,但不知道在哪
另外,我取出数据库的数据放在GridView上,GridView我时间编辑了字段名称。这样数据取出来看的话更清晰。但是,我编辑的名称有的很长,这样在生成网页后他会换行,这样GridView就显得很胖,很难看,有没解决办法?就是下面这样名字 性别 年龄 家庭住址 (我希望是这样显示)名字 性别 年龄 家庭
地址 (但确实这样的,这样GridView就会很高,很胖的样子,很难看)求解答2个问题~~100分
sfup
2,<ItemStyle Width="150px" />
2.如果不想GridView 换行 给td 设一个Css样式就可以了word-break:keep-all,
protected void btnUpdateConfirm_Click(object sender, EventArgs e)
{
decimal cycleTypeKey = Convert.ToDecimal(this.btnUpdateConfirm.CommandArgument);
RCycleType rc = ObjUtil.LoadObject<RCycleType>(cycleTypeKey); rc.CycleTypeName = this.txtCycleTypeName.Text.Trim();
rc.CycleUnit = this.ddlCycleUnit.Text;
rc.CycleCode = this.txtCycleCode.Text;
rc.IntervalNumber = Convert.ToInt32(this.txtIntervalNumbe.Text);
rc.OffsetNumber = Convert.ToInt32(this.txtOffsetNumber.Text);
rc.OffsetDay = Convert.ToInt32(this.txtOffsetDay.Text); ObjUtil.UpdateObject(rc); this.pnlQry.Visible = true;
this.pnlDetail.Visible = false;
this.btnUpdateConfirm.Visible = false;
this.btnUpdateCancle.Visible = false;
this.queryList();
}
#endregion
#region 更新取消
protected void btnUpdateCancle_Click(object sender, EventArgs e)
{
this.pnlQry.Visible = true;
this.pnlDetail.Visible = false;
this.btnUpdateConfirm.Visible = false;
this.btnUpdateCancle.Visible = false;
}
#endregion #region 激发修改,删除事件
protected void gvCycleType_DataBound(object sender, EventArgs e)
{
foreach (GridViewRow row in this.gvCycleType.Rows)
{
LinkButton lkbDelete = (LinkButton)row.FindControl("lkbDelete");
LinkButton lkbUpdate = (LinkButton)row.FindControl("lkbUpdate"); lkbDelete.CommandArgument = row.RowIndex.ToString();
lkbUpdate.CommandArgument = row.RowIndex.ToString(); lkbDelete.Attributes.Add("OnClick", "return confirm('确定要删除该类型吗?')");
}
}
#endregion #region 数据窗口中的Command操作
protected void gvCycleType_RowCommand(object sender, GridViewCommandEventArgs e)
{
int rowIndex = Convert.ToInt32(e.CommandArgument);
GridViewRow row = this.gvCycleType.Rows[rowIndex]; decimal cycleTypeId = Convert.ToDecimal(row.Cells[0].Text);
RCycleType r = null; switch (((LinkButton)e.CommandSource).ID)
{
case "lkbDelete": //删除按钮
r = (RCycleType)ObjUtil.LoadObjectCritSingleA<RCycleType>("CycleTypeId", cycleTypeId);
ObjUtil.DeleteObject(r);
this.queryList();
break; case "lkbUpdate": //修改按钮
r = (RCycleType)ObjUtil.LoadObjectCritSingle(typeof(RCycleType), "CycleTypeId", cycleTypeId); this.lblTitle.Text = "修改周期类型"; this.txtCycleTypeId.Text = r.CycleTypeId.ToString();
this.txtCycleTypeName.Text=r.CycleTypeName;
this.ddlCycleUnit.Text = r.CycleUnit;
this.txtCycleCode.Text= r.CycleCode;
this.txtIntervalNumbe.Text = r.IntervalNumber.ToString();
this.txtOffsetNumber.Text = r.OffsetNumber.ToString();
this.txtOffsetDay.Text = r.OffsetDay.ToString();
this.btnUpdateConfirm.CommandArgument = r.KeyNum.ToString(); this.pnlQry.Visible = false;
this.pnlDetail.Visible = true;
this.txtCycleTypeId.Visible = true;
this.txtCycleTypeId.Enabled = false;
this.lblCycleTypeId.Visible = true;
this.btnUpdateConfirm.Visible = true;
this.btnUpdateCancle.Visible = true; this.btnInsertConfirm.Visible = false;
this.btnInsertCancle.Visible = false;
break; default:
break;
}
}
#endregion这是我的修改,删除功能代码
<ItemStyle HorizontalAlign="Left" Width="100px" />
</asp:BoundField>
<ContentTemplate>
<cc1:OraclePager ID="OraclePager1" runat="server" />
<asp:GridView ID="gvCycleDefine" runat="server" AutoGenerateColumns="False" OnDataBound="gvCycleDefine_DataBound" OnRowCommand="gvCycleDefine_RowCommand">
<Columns>
<asp:BoundField HeaderText="周期标识" DataField="CycleId" />
<asp:BoundField HeaderText="周期类型标识" DataField="CycleTypeId" />
<asp:BoundField HeaderText="周期开始日期" DataField="StartDate" />
<asp:BoundField HeaderText="周期结束日期" DataField="EndDate" />
<asp:BoundField HeaderText="上一周期标识" DataField="LastCycleId" />
<asp:BoundField HeaderText="状态" DataField="State" />
<asp:BoundField HeaderText="状态日期" DataField="StateDate" />
<asp:BoundField HeaderText="周期名称" DataField="CycleName" />
<asp:BoundField HeaderText="上偏移量" DataField="LastOffset" />
<asp:BoundField HeaderText="结束偏移量" DataField="EndOffset" />
<asp:TemplateField HeaderText="操作">
<ItemTemplate>
<asp:LinkButton ID="lkbUpdate" runat="server">修改</asp:LinkButton>
<asp:LinkButton ID="lkbDelete" runat="server">删除</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<cc1:OraclePager ID="OraclePager1" runat="server" />
<asp:GridView ID="gvCycleDefine" runat="server" AutoGenerateColumns="False" OnDataBound="gvCycleDefine_DataBound" OnRowCommand="gvCycleDefine_RowCommand" OnRowEditing="gdvContent_RowEditing">
<Columns>
<asp:BoundField HeaderText="周期标识" DataField="CycleId" />
<asp:BoundField HeaderText="周期类型标识" DataField="CycleTypeId" />
<asp:BoundField HeaderText="周期开始日期" DataField="StartDate" />
<asp:BoundField HeaderText="周期结束日期" DataField="EndDate" />
<asp:BoundField HeaderText="上一周期标识" DataField="LastCycleId" />
<asp:BoundField HeaderText="状态" DataField="State" />
<asp:BoundField HeaderText="状态日期" DataField="StateDate" />
<asp:BoundField HeaderText="周期名称" DataField="CycleName" />
<asp:BoundField HeaderText="上偏移量" DataField="LastOffset" />
<asp:BoundField HeaderText="结束偏移量" DataField="EndOffset" />
<asp:TemplateField HeaderText="操作">
<ItemTemplate>
<asp:LinkButton ID="lkbUpdate" runat="server" CommandName="Edit">修改 </asp:LinkButton>
<asp:LinkButton ID="lkbDelete" runat="server">删除 </asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>//编辑
protected void gdvContent_RowEditing(object sender, GridViewEditEventArgs e)
{
GridViewRow row = gdvContent.Rows[e.NewEditIndex]; decimal cycleTypeId = Convert.ToDecimal(row.Cells[0].Text);
RCycleType r = null;
......
}
<asp:TemplateField HeaderText="操作">
<ItemTemplate>
<asp:LinkButton ID="lkbUpdate" runat="server">修改 </asp:LinkButton>
<asp:LinkButton ID="lkbDelete" runat="server">删除 </asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
这个为什么不做成
<asp:TemplateField HeaderText="操作">
<ItemTemplate>
<asp:LinkButton ID="lkbUpdate" runat="server" CommandName="Edit">修改 </asp:LinkButton>
</ItemTemplate>
<EditItemTemplate>
<asp:LinkButton ID="lkbDelete" runat="server">删除 </asp:LinkButton>
</EditItemTemplate>
</asp:TemplateField>
<asp:BoundField HeaderText="家庭住址" DataField="字段名" />
<HeaderStyle Wrap="False" />
</asp:BoundField>
HeaderStyle-Wrap="false"<asp:BoundField HeaderText="周期标识" DataField="CycleId" HeaderStyle-Wrap="false"/>
还有OnRowDeleting ="" OnSelectedIndexChanged =""
只要触发事件的是按钮,就可以给按钮设一个CommandName
Edit,Delete,Select分别对应OnRowEditing,OnRowDeleting ,OnSelectedIndexChanged 事件
在这些事件里都能拿到触发该事件的那行的索引,不需要在gvCycleType_DataBound中绑定行号,
既简单又方便,何乐而不为呢?