如果编程读取编辑模板内3个Textbox值 则读取不到更新的值 读取的是原始值这样导致更新不了新值!!如:
string chengCi = ((TextBox)gridview1.Rows[e.RowIndex].FindControl ("chengciTextBox1")).Text;
string xiangMuHao = ((TextBox)gridview1.Rows[e.RowIndex].FindControl("xiangmuhaoTextBox1")).Text;
string xiangMuName = ((TextBox)gridview1.Rows[e.RowIndex].FindControl("xiangmunameTextBox1")).Text;
bool success = CatalogAccess.UpdateMuLu(xiangmuID, chengCi, xiangMuHao, xiangMuName);更新函数 存储过程应该没有问题 因为我将RowUpdating事情中3个要更新的字符串变量全部换成字符串常量调试后一起正常!如:
string chengCi ="1" ;
string xiangMuHao ="1";
string xiangMuName ="1";
bool success = CatalogAccess.UpdateMuLu(xiangmuID, chengCi, xiangMuHao, xiangMuName);详细代码如下:
<asp:GridView
ID="gridview1"
DataKeyNames="XiangMuID"
AutoGenerateColumns="false"
runat="server"
OnRowUpdating="gridview1_RowUpdating"
OnRowCancelingEdit="gridview1_RowCancelingEdit"
OnRowEditing="gridview1_RowEditing">
<Columns>
<asp:BoundField HeaderText="序号" DataField="XiangMuID" ReadOnly="true"/>
<asp:TemplateField HeaderText="层次">
<ItemTemplate>
<asp:Label
ID="chengciLabel"
Text='<%# Bind("ChengCi") %>'
runat="server">
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox
ID="chengciTextBox1"
TextMode="SingleLine"
Text='<%# Bind("ChengCi") %>'
runat="server"/>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="项目号">
<ItemTemplate>
<asp:Label
ID="xiangmuhaoLabel"
Text='<%# Bind("XiangMuHao") %>'
runat="server">
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox
ID="xiangmuhaoTextBox1"
Text='<%# Bind("XiangMuHao") %>'
TextMode="SingleLine"
runat="server">
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
...
<asp:CommandField ShowEditButton="true" />
</Columns>
</asp:GridView>
protected void gridview1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
try
{
string xiangmuID = gridview1.DataKeys[e.RowIndex].Value.ToString();
string chengCi = ((TextBox)gridview1.Rows[e.RowIndex].FindControl ("chengciTextBox1")).Text;
string xiangMuHao = ((TextBox)gridview1.Rows[e.RowIndex].FindControl("xiangmuhaoTextBox1")).Text;
string xiangMuName = ((TextBox)gridview1.Rows[e.RowIndex].FindControl("xiangmunameTextBox1")).Text;
bool success = CatalogAccess.UpdateMuLu(xiangmuID, chengCi, xiangMuHao, xiangMuName);
gridview1.EditIndex = -1;
statusLabel.Text = success ? "更新成功" : "更新失败";
BindGird();
}
catch (Exception ex)
{
throw ex;
}
}
string chengCi = ((TextBox)gridview1.Rows[e.RowIndex].FindControl ("chengciTextBox1")).Text;
string xiangMuHao = ((TextBox)gridview1.Rows[e.RowIndex].FindControl("xiangmuhaoTextBox1")).Text;
string xiangMuName = ((TextBox)gridview1.Rows[e.RowIndex].FindControl("xiangmunameTextBox1")).Text;
bool success = CatalogAccess.UpdateMuLu(xiangmuID, chengCi, xiangMuHao, xiangMuName);更新函数 存储过程应该没有问题 因为我将RowUpdating事情中3个要更新的字符串变量全部换成字符串常量调试后一起正常!如:
string chengCi ="1" ;
string xiangMuHao ="1";
string xiangMuName ="1";
bool success = CatalogAccess.UpdateMuLu(xiangmuID, chengCi, xiangMuHao, xiangMuName);详细代码如下:
<asp:GridView
ID="gridview1"
DataKeyNames="XiangMuID"
AutoGenerateColumns="false"
runat="server"
OnRowUpdating="gridview1_RowUpdating"
OnRowCancelingEdit="gridview1_RowCancelingEdit"
OnRowEditing="gridview1_RowEditing">
<Columns>
<asp:BoundField HeaderText="序号" DataField="XiangMuID" ReadOnly="true"/>
<asp:TemplateField HeaderText="层次">
<ItemTemplate>
<asp:Label
ID="chengciLabel"
Text='<%# Bind("ChengCi") %>'
runat="server">
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox
ID="chengciTextBox1"
TextMode="SingleLine"
Text='<%# Bind("ChengCi") %>'
runat="server"/>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="项目号">
<ItemTemplate>
<asp:Label
ID="xiangmuhaoLabel"
Text='<%# Bind("XiangMuHao") %>'
runat="server">
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox
ID="xiangmuhaoTextBox1"
Text='<%# Bind("XiangMuHao") %>'
TextMode="SingleLine"
runat="server">
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
...
<asp:CommandField ShowEditButton="true" />
</Columns>
</asp:GridView>
protected void gridview1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
try
{
string xiangmuID = gridview1.DataKeys[e.RowIndex].Value.ToString();
string chengCi = ((TextBox)gridview1.Rows[e.RowIndex].FindControl ("chengciTextBox1")).Text;
string xiangMuHao = ((TextBox)gridview1.Rows[e.RowIndex].FindControl("xiangmuhaoTextBox1")).Text;
string xiangMuName = ((TextBox)gridview1.Rows[e.RowIndex].FindControl("xiangmunameTextBox1")).Text;
bool success = CatalogAccess.UpdateMuLu(xiangmuID, chengCi, xiangMuHao, xiangMuName);
gridview1.EditIndex = -1;
statusLabel.Text = success ? "更新成功" : "更新失败";
BindGird();
}
catch (Exception ex)
{
throw ex;
}
}
string xiangmuID = gridview1.DataKeys[e.RowIndex].Value.ToString();
改为int xiangmuID = int.Parse(gridview1.DataKeys[e.RowIndex].Value.ToString());