如题,找了半天,不清楚什么地方出现了问题,就贴码求援了。
1、ObjectDataSource前台代码:
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DeleteMethod="DeletePaper"
InsertMethod="InsterPaper" SelectMethod="SelectPaper" TypeName="papers" UpdateMethod="UpdatePaper" OnUpdating="ObjectDataSource1_Updating">
<DeleteParameters>
<asp:Parameter Name="paper_id" Type="Int32" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="paper_name" Type="String" />
<asp:Parameter Name="paper_exam_time" Type="String" />
<asp:Parameter Name="paper_start_time" Type="String" />
<asp:Parameter Name="paper_end_time" Type="String" />
<asp:Parameter Name="paper_id" Type="String" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="paper_name" Type="String" />
<asp:Parameter Name="paper_exam_time" Type="String" />
<asp:Parameter Name="paper_start_time" Type="String" />
<asp:Parameter Name="paper_end_time" Type="String" />
</InsertParameters>
</asp:ObjectDataSource>
2、GridView代码
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True"
AutoGenerateColumns="False" BackColor="White" BorderColor="#CC9966" BorderStyle="None"
BorderWidth="1px" CellPadding="4" DataSourceID="ObjectDataSource1" Font-Size="10pt"
Width="820px" HorizontalAlign="Center" DataKeyNames="paper_id" OnRowUpdated="GridView1_RowUpdated">
<FooterStyle BackColor="#FFFFCC" ForeColor="#330099" />
<RowStyle BackColor="White" ForeColor="#330099" />
<Columns>
<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" >
<ItemStyle Width="60px" />
</asp:CommandField>
<asp:TemplateField HeaderText="考试名称">
<EditItemTemplate>
<asp:TextBox ID="paper_name" runat="server" Text='<%# Bind("paper_name") %>' Width="80"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("paper_name") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="90px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="建立时间">
<EditItemTemplate>
<asp:Label ID="paper_" runat="server" Text='<%# Bind("paper_build_time") %>'></asp:Label>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# Bind("paper_build_time") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="100px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="考试时间">
<EditItemTemplate>
<asp:TextBox ID="paper_exam_time" runat="server" Text='<%# Bind("paper_exam_time") %>' Width="20px"></asp:TextBox>
分钟
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label3" runat="server" Text='<%# Bind("paper_exam_time") %>'></asp:Label>
分钟
</ItemTemplate>
<ItemStyle Width="65px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="开考时间">
<EditItemTemplate>
<asp:DropDownList ID="sddlYear1" runat="server">
</asp:DropDownList>
年<asp:DropDownList ID="sddlMonth1" runat="server">
</asp:DropDownList>月
<asp:DropDownList ID="sddlDay1" runat="server">
</asp:DropDownList>日 <br />
<asp:DropDownList ID="sddlHour1" runat="server">
</asp:DropDownList>时
<asp:DropDownList ID="sddlMinute1" runat="server">
</asp:DropDownList>分
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label4" runat="server" Text='<%# Bind("paper_start_time") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="220px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="停考时间">
<EditItemTemplate>
<asp:DropDownList ID="sddlYear2" runat="server">
</asp:DropDownList>年
<asp:DropDownList ID="sddlMonth2" runat="server">
</asp:DropDownList>月<asp:DropDownList ID="sddlDay2" runat="server">
</asp:DropDownList>日<br />
<asp:DropDownList ID="sddlHour2" runat="server">
</asp:DropDownList>时
<asp:DropDownList ID="sddlMinute2" runat="server">
</asp:DropDownList>分
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label5" runat="server" Text='<%# Bind("paper_end_time") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="220px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="考卷分数">
<EditItemTemplate>
<asp:Label ID="Label8" runat="server" Text='<%# Bind("paper_") %>'></asp:Label>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label6" runat="server" Text='<%# Bind("paper_") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="65px" />
</asp:TemplateField>
</Columns>
<PagerStyle BackColor="#FFFFCC" ForeColor="#330099" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="#663399" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="#FFFFCC" />
<EditRowStyle HorizontalAlign="Center" />
</asp:GridView>
代码接楼下
1、ObjectDataSource前台代码:
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DeleteMethod="DeletePaper"
InsertMethod="InsterPaper" SelectMethod="SelectPaper" TypeName="papers" UpdateMethod="UpdatePaper" OnUpdating="ObjectDataSource1_Updating">
<DeleteParameters>
<asp:Parameter Name="paper_id" Type="Int32" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="paper_name" Type="String" />
<asp:Parameter Name="paper_exam_time" Type="String" />
<asp:Parameter Name="paper_start_time" Type="String" />
<asp:Parameter Name="paper_end_time" Type="String" />
<asp:Parameter Name="paper_id" Type="String" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="paper_name" Type="String" />
<asp:Parameter Name="paper_exam_time" Type="String" />
<asp:Parameter Name="paper_start_time" Type="String" />
<asp:Parameter Name="paper_end_time" Type="String" />
</InsertParameters>
</asp:ObjectDataSource>
2、GridView代码
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True"
AutoGenerateColumns="False" BackColor="White" BorderColor="#CC9966" BorderStyle="None"
BorderWidth="1px" CellPadding="4" DataSourceID="ObjectDataSource1" Font-Size="10pt"
Width="820px" HorizontalAlign="Center" DataKeyNames="paper_id" OnRowUpdated="GridView1_RowUpdated">
<FooterStyle BackColor="#FFFFCC" ForeColor="#330099" />
<RowStyle BackColor="White" ForeColor="#330099" />
<Columns>
<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" >
<ItemStyle Width="60px" />
</asp:CommandField>
<asp:TemplateField HeaderText="考试名称">
<EditItemTemplate>
<asp:TextBox ID="paper_name" runat="server" Text='<%# Bind("paper_name") %>' Width="80"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("paper_name") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="90px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="建立时间">
<EditItemTemplate>
<asp:Label ID="paper_" runat="server" Text='<%# Bind("paper_build_time") %>'></asp:Label>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# Bind("paper_build_time") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="100px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="考试时间">
<EditItemTemplate>
<asp:TextBox ID="paper_exam_time" runat="server" Text='<%# Bind("paper_exam_time") %>' Width="20px"></asp:TextBox>
分钟
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label3" runat="server" Text='<%# Bind("paper_exam_time") %>'></asp:Label>
分钟
</ItemTemplate>
<ItemStyle Width="65px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="开考时间">
<EditItemTemplate>
<asp:DropDownList ID="sddlYear1" runat="server">
</asp:DropDownList>
年<asp:DropDownList ID="sddlMonth1" runat="server">
</asp:DropDownList>月
<asp:DropDownList ID="sddlDay1" runat="server">
</asp:DropDownList>日 <br />
<asp:DropDownList ID="sddlHour1" runat="server">
</asp:DropDownList>时
<asp:DropDownList ID="sddlMinute1" runat="server">
</asp:DropDownList>分
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label4" runat="server" Text='<%# Bind("paper_start_time") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="220px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="停考时间">
<EditItemTemplate>
<asp:DropDownList ID="sddlYear2" runat="server">
</asp:DropDownList>年
<asp:DropDownList ID="sddlMonth2" runat="server">
</asp:DropDownList>月<asp:DropDownList ID="sddlDay2" runat="server">
</asp:DropDownList>日<br />
<asp:DropDownList ID="sddlHour2" runat="server">
</asp:DropDownList>时
<asp:DropDownList ID="sddlMinute2" runat="server">
</asp:DropDownList>分
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label5" runat="server" Text='<%# Bind("paper_end_time") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="220px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="考卷分数">
<EditItemTemplate>
<asp:Label ID="Label8" runat="server" Text='<%# Bind("paper_") %>'></asp:Label>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label6" runat="server" Text='<%# Bind("paper_") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="65px" />
</asp:TemplateField>
</Columns>
<PagerStyle BackColor="#FFFFCC" ForeColor="#330099" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="#663399" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="#FFFFCC" />
<EditRowStyle HorizontalAlign="Center" />
</asp:GridView>
代码接楼下
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (((DropDownList)e.Row.FindControl("sddlYear1")) != null)
{
DropDownList sddlYear1 = (DropDownList)e.Row.FindControl("sddlYear1");
for (int i = 2008; i <= 2015; i++)
{
ListItem li = new ListItem(i.ToString(), i.ToString());
//sddlYear1.Items.Add(i.ToString());
sddlYear1.Items.Add(li);
if (i == ((DateTime)(DataBinder.Eval(e.Row.DataItem, "paper_start_time"))).Year)
{
li.Selected = true;
}
}
…………下略,是分别为sddlMonth1、sddlDay1等的生成。
}
}
4、ObjectDataSource1_Updating代码,设置ObjectDataSoure1的UpdateParameters的值
protected void ObjectDataSource1_Updating(object sender, ObjectDataSourceMethodEventArgs e)
{
ObjectDataSource1.UpdateParameters["paper_name"].DefaultValue = ((TextBox)GridView1.Rows[GridView1.EditIndex].FindControl("paper_name")).Text;
ObjectDataSource1.UpdateParameters["paper_exam_time"].DefaultValue = ((TextBox)GridView1.Rows[GridView1.EditIndex].FindControl("paper_exam_time")).Text;
DateTime dt1 = new DateTime(int.Parse(((DropDownList)GridView1.Rows[GridView1.EditIndex].FindControl("sddlYear1")).SelectedValue), int.Parse(((DropDownList)GridView1.Rows[GridView1.EditIndex].FindControl("sddlMonth1")).SelectedValue), int.Parse(((DropDownList)GridView1.Rows[GridView1.EditIndex].FindControl("sddlDay1")).SelectedValue), int.Parse(((DropDownList)GridView1.Rows[GridView1.EditIndex].FindControl("sddlHour1")).SelectedValue), int.Parse(((DropDownList)GridView1.Rows[GridView1.EditIndex].FindControl("sddlMinute1")).SelectedValue),0);
ObjectDataSource1.UpdateParameters["paper_start_time"].DefaultValue = dt1.ToString();
DateTime dt2 = new DateTime(int.Parse(((DropDownList)GridView1.Rows[GridView1.EditIndex].FindControl("sddlYear2")).SelectedValue), int.Parse(((DropDownList)GridView1.Rows[GridView1.EditIndex].FindControl("sddlMonth2")).SelectedValue), int.Parse(((DropDownList)GridView1.Rows[GridView1.EditIndex].FindControl("sddlDay2")).SelectedValue), int.Parse(((DropDownList)GridView1.Rows[GridView1.EditIndex].FindControl("sddlHour2")).SelectedValue), int.Parse(((DropDownList)GridView1.Rows[GridView1.EditIndex].FindControl("sddlMinute2")).SelectedValue), 0);
ObjectDataSource1.UpdateParameters["paper_end_time"].DefaultValue = dt2.ToString();
ObjectDataSource1.UpdateParameters["paper_id"].DefaultValue = (GridView1.DataKeys[GridView1.EditIndex].Value).ToString();
}
5、paper.cs代码
public SqlDataSource CreateDs()
{
SqlDataSource sqlds = new SqlDataSource();
sqlds.ProviderName = "System.Data.OleDb";
sqlds.ConnectionString = ConfigurationManager.ConnectionStrings["App_connstr"].ConnectionString;
sqlds.SelectCommand = "select * from paper";
sqlds.InsertCommand = "insert into paper(paper_name,paper_exam_time,paper_start_time,paper_end_time) values(@paper_name,@paper_exam_time,@paper_start_time,@paper_end_time)";
sqlds.UpdateCommand = "update paper set paper_name=@paper_name,paper_exam_time=@paper_exam_time,paper_start_time=@paper_start_time,paper_end_time=@paper_end_time where paper_id=@paper_id";
sqlds.DeleteCommand = "delete from paper where paper_id=@paper_id";
return sqlds;
} public void UpdatePaper(string paper_name, string paper_exam_time, string paper_start_time, string paper_end_time , string paper_id)
{
SqlDataSource sqlds = this.CreateDs();
sqlds.InsertParameters.Add("@paper_name", TypeCode.String, paper_name);
sqlds.InsertParameters.Add("@paper_exam_time", TypeCode.Int16, paper_exam_time);
sqlds.InsertParameters.Add("@paper_start_time", TypeCode.String, paper_start_time);
sqlds.InsertParameters.Add("@paper_end_time", TypeCode.String, paper_end_time);
sqlds.UpdateParameters.Add("@paper_id", TypeCode.Int16, paper_id);
sqlds.Update();
}在Update时出现
ObjectDataSource"ObjectDataSource1"未能找到带参数的非泛型方法"UpdatePaper":paper_name,paper_exam_time,paper_start_time,paper_end_time,paper_build_time,paper_,paper_id.在线急求援!!!!
http://msdn2.microsoft.com/zh-cn/library/3h7eexxe(VS.80).aspx
网友回复:等待高手出现啊^_^
网友回复:我按照你给的下面内容重新试试,程序可以跑通,你再试试
http://msdn2.microsoft.com/zh-cn/library/3h7eexxe(VS.80).aspx
网友回复:我重新试了一下,还是不行,数据显示没问题,可是当修改数据,执行UPDATE时就出错,点击某一行编辑,然后点更新就出现上面那个错误了 ObjectDataSource“ObjectDataSource1”未能找到带参数的非泛型方法“Update”: Name, Sex, Age, UserName, Password, original_EmployeeID 网友回复:你的数据源的问题啊
网友回复: 引用 2 楼 stan0714 的回复:
我按照你给的下面内容重新试试,程序可以跑通,你再试试
http://msdn2.microsoft.com/zh-cn/library/3h7eexxe(VS.80).aspx
请问你有没试过更新数据啊?我试了好多次都不行
网友回复:http://blog.tiantiansoft.com/user1/9/archives/2006/2470.html
http://www.cnblogs.com/dugoogle/archive/2007/09/17/895795.html
http://forums.asp.net/p/993519/1295073.aspx#1295073 请查看以上的文章
网友回复:我把GridView里面的EmployeeID列的只读属性设置为FALSE,就正确了!可是始终看不懂是什么原因,因为EmployeeID在数据库里是主键,在GridView中编辑是不想修改的,所以EmployeeID列才设为只读!
网友回复:哈哈^_^ 我终于明白了! 当一开始新建EmployeesObject.xsd的时候,向导为你生成了一条默认的Update语句,如下:
Update(String EmployeeID, String Name, String Original_EmployeeID),返回int32;
其SQL语句为:UPDATE [Employee] SET [EmployeeID] = @EmployeeID, [Name] = @Name WHERE (([EmployeeID] = @Original_EmployeeID)); 而参数里面的EmployeeID在我引用的时候GridView默认是设为只读,所以与向导生成的Update语句冲突了!都是使用默认的方式,没想到竟然会出错,呵呵^_^ 刚我试了下,在数据集EmployeesObject.xsd中新建自定义的Update语句,如下:
UpdateQuery(String Name, String Original_EmployeeID),返回int32;
其SQL语句为:UPDATE Employee SET Name = @Name WHERE (EmployeeID = @Original_EmployeeID)
然后在页面的数据源ObjectDataSource中重新配置Update语句为自己新建的这条,EmployeeID在GridView还是设为默认,结果就不会出错了,呵呵~EmployeeID设为只读了,就不能作为参数传进去了!