问题描述
DataGrid中默认的排列是abc11.11.2修改删除55.55.8修改删除由于abc等列比较多,横向太长,不利于观察怎么才能改成.修改修改删除删除a15b1.15.5c1.25.8请教啊~~我的原代码如下:请直接修改,或者贴出更好的东西。DATAGIRD原代码如下:<asp:datagridid="DataGrid1"Runat="server"DataKeyField="OrganizationID"EnableViewState="true"OnItemCreated="Deleteconfirm"PageSize="5"OnDeleteCommand="MyDataGrid_Delete"OnUpdateCommand="MyDataGrid_Update"OnCancelCommand="MyDataGrid_Cancel"OnEditCommand="MyDataGrid_Edit"AutoGenerateColumns="False"><ItemStyleBackColor="white"ForeColor="#330099"/><HeaderStyleFont-Bold="true"ForeColor="#330099"BackColor="#FFFFCC"/><Columns><asp:BoundColumnDataField="OrganizationID"SortExpression="OrganizationID"ReadOnly="True"HeaderText="编号"></asp:BoundColumn><asp:BoundColumnDataField="CategoryID"SortExpression="OrganizationID"ReadOnly="True"HeaderText="类别编号"></asp:BoundColumn><asp:TemplateColumnHeaderText="名称"SortExpression="OrganizationID"><ItemTemplate><asp:Labelrunat="server"ID="label_OrganizationName"Text='<%#DataBinder.Eval(Container.DataItem,"OrganizationName")%>'></asp:Label></ItemTemplate><EditItemTemplate><asp:TextBoxrunat="server"Width="120px"ID="edit_OrganizationName"Text='<%#DataBinder.Eval(Container.DataItem,"OrganizationName")%>'></asp:TextBox></EditItemTemplate></asp:TemplateColumn><asp:TemplateColumnHeaderText="缩写"SortExpression="OrganizationID"><ItemTemplate><asp:Labelrunat="server"ID="Label_Abbreviation"Text='<%#DataBinder.Eval(Container.DataItem,"Abbreviation")%>'></asp:Label></ItemTemplate><EditItemTemplate><asp:TextBoxrunat="server"Width="120px"ID="edit_Abbreviation"Text='<%#DataBinder.Eval(Container.DataItem,"Abbreviation")%>'></asp:TextBox></EditItemTemplate></asp:TemplateColumn><asp:EditCommandColumnEditText="修改"CancelText="取消"UpdateText="更新"Visible="false"ItemStyle-Wrap="false"></asp:EditCommandColumn><asp:ButtonColumnText="删除"Visible="false"CommandName="delete"></asp:ButtonColumn></Columns></asp:datagrid>
解决方案
解决方案二:
后台代码如下:DataGrid中默认的排列是abc11.11.2修改删除55.55.8修改删除由于abc等列比较多,横向太长,不利于观察怎么才能改成.修改修改删除删除a15b1.15.5c1.25.8请教啊~~我的原代码如下:请直接修改,或者贴出更好的东西。DATAGIRD原代码如下:[code=C#]<asp:datagridid="DataGrid1"Runat="server"DataKeyField="OrganizationID"EnableViewState="true"OnItemCreated="Deleteconfirm"PageSize="5"OnDeleteCommand="MyDataGrid_Delete"OnUpdateCommand="MyDataGrid_Update"OnCancelCommand="MyDataGrid_Cancel"OnEditCommand="MyDataGrid_Edit"AutoGenerateColumns="False"><ItemStyleBackColor="white"ForeColor="#330099"/><HeaderStyleFont-Bold="true"ForeColor="#330099"BackColor="#FFFFCC"/><Columns><asp:BoundColumnDataField="OrganizationID"SortExpression="OrganizationID"ReadOnly="True"HeaderText="编号"></asp:BoundColumn><asp:BoundColumnDataField="CategoryID"SortExpression="OrganizationID"ReadOnly="True"HeaderText="类别编号"></asp:BoundColumn><asp:TemplateColumnHeaderText="名称"SortExpression="OrganizationID"><ItemTemplate><asp:Labelrunat="server"ID="label_OrganizationName"Text='<%#DataBinder.Eval(Container.DataItem,"OrganizationName")%>'></asp:Label></ItemTemplate><EditItemTemplate><asp:TextBoxrunat="server"Width="120px"ID="edit_OrganizationName"Text='<%#DataBinder.Eval(Container.DataItem,"OrganizationName")%>'></asp:TextBox></EditItemTemplate></asp:TemplateColumn><asp:TemplateColumnHeaderText="缩写"SortExpression="OrganizationID"><ItemTemplate><asp:Labelrunat="server"ID="Label_Abbreviation"Text='<%#DataBinder.Eval(Container.DataItem,"Abbreviation")%>'></asp:Label></ItemTemplate><EditItemTemplate><asp:TextBoxrunat="server"Width="120px"ID="edit_Abbreviation"Text='<%#DataBinder.Eval(Container.DataItem,"Abbreviation")%>'></asp:TextBox></EditItemTemplate></asp:TemplateColumn><asp:EditCommandColumnEditText="修改"CancelText="取消"UpdateText="更新"Visible="false"ItemStyle-Wrap="false"></asp:EditCommandColumn><asp:ButtonColumnText="删除"Visible="false"CommandName="delete"></asp:ButtonColumn></Columns></asp:datagrid>
[/code]
解决方案三:
关注.
解决方案四:
将绑定的dataTable自己写函数转置
解决方案五:
privatevoidPage_Load(objectsender,System.EventArgse){//装载删除按钮的客户端事件//DeleteInfo.Attributes["onclick"]="returnconfirm('您确认要删除该条记录吗?')";//在此处放置用户代码以初始化页面if((!Page.IsPostBack))//首次登陆本页面{BindData();//绑定OrganizationInfo表到Dategrid}//if(Session["Username"].ToString()!=string.Empty)//{DataGrid1.Columns[4].Visible=true;DataGrid1.Columns[5].Visible=true;//删除按钮可见//}}//修改按钮publicvoidMyDataGrid_Edit(objectsender,DataGridCommandEventArgse){DataGrid1.EditItemIndex=(int)e.Item.ItemIndex;stringconnstring="DataSource=localhost;InitialCatalog=FACILITYALARM;uid=facilityalarm;pwd=123456;";SqlConnectionconn=newSqlConnection(connstring);stringquery="SELECT*FROMOrganizationInfoWHERECategoryID='0'";SqlDataAdapterDa=newSqlDataAdapter(query,conn);DataSetDs=newDataSet();Da.Fill(Ds,"OrganizationInfo");//当存在记录,绑定相关控件if(Ds.Tables["OrganizationInfo"].Rows.Count!=0){DataGrid1.Visible=true;DataGrid1.DataSource=Ds.Tables["OrganizationInfo"].DefaultView;}DataGrid1.DataBind();}//取消按钮publicvoidMyDataGrid_Cancel(objectsender,DataGridCommandEventArgse){DataGrid1.EditItemIndex=-1;//-1为退出编辑状态BindData();}//更新按钮publicvoidMyDataGrid_Update(objectsender,DataGridCommandEventArgse){if(Page.IsValid){//stringCategoryIDID=DataGrid1.datakeys[DataGrid1.selectedindex].tostring();//05语法//stringCategoryIDID=DataGrid1.DataKeys[e.Item.ItemIndex].ToString();//不成功,但是采用'"+XXX+"'方式引入就成功了,说明只要是动态的,就必须采用+方式//DataGrid1.Items[0].Cells[0].Text.ToString();//该语句可以返回当前datagrid第一行第一列的内容stringconnstring="DataSource=localhost;InitialCatalog=FACILITYALARM;uid=facilityalarm;pwd=123456;";SqlConnectionConn=newSqlConnection(connstring);SqlCommandsqlcmd=newSqlCommand();sqlcmd.Connection=Conn;Conn.Open();try{///////////////////////////////////////////接受用户的修改。sqlcmd.CommandText="UPDATEOrganizationInfoSETOrganizationName='"+((TextBox)e.Item.FindControl("edit_OrganizationName")).Text+"',Abbreviation='"+((TextBox)e.Item.FindControl("edit_Abbreviation")).Text+"'whereOrganizationID='"+DataGrid1.DataKeys[e.Item.ItemIndex].ToString()+"'";sqlcmd.CommandType=CommandType.Text;sqlcmd.ExecuteNonQuery();Response.Write("<script>alert('修改记录成功!');</script>");DataGrid1.EditItemIndex=-1;//这句加在BindData()之前BindData();}catch(SqlExceptionex){Response.Write("<script>alert('"+ex.Message+"');</script>");}finally{Conn.Close();}}}//删除确认publicvoidDeleteconfirm(objectsender,System.Web.UI.WebControls.DataGridItemEventArgse){LinkButtontemp;if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem){temp=(LinkButton)e.Item.Cells[5].Controls[0];temp.Attributes["onclick"]="javascript:returnconfirm('确定要删除此记录吗?');";}}//开始确认publicvoidMyDataGrid_Delete(objectsender,DataGridCommandEventArgse){//CategoryID='"+DataGrid1.DataKeys[e.Item.ItemIndex].ToString()+"'//从datagrid中取出选定的当前主键的值//欲删除油田群级别的记录,需要检测FieldID及FacilityID,按逻辑只需检测FieldID即可。FieldID等同于OrganizationID//拥有FieldID的表如下FacilityDeviceInfoPtztcsbYlztcsbstringconnstring="DataSource=localhost;InitialCatalog=FACILITYALARM;uid=facilityalarm;pwd=123456;";SqlConnectionConn=newSqlConnection(connstring);SqlCommandsqlcmd=newSqlCommand();sqlcmd.Connection=Conn;inti_tablecount=0;//记录查询出的表格数量,当不为0时,表示检测的所有表中至少有一个表包含了categoryID字段,将不执行删除操作Conn.Open();try{///////////////////////////////////////////检测FacilityDeviceInfo表中的是否含有FieldID字段与欲删除的OrganizitionID的记录相同值。//////////////////////////////////////////由于本编辑界面只涉及OrganizitionID==0的情况,所以增加只增加为0的,那么删除也只能删除为0的,此条件必须约束。sqlcmd.CommandText="SELECTFieldIDFROMFacilityDeviceInfowhereFieldID='"+DataGrid1.DataKeys[(int)e.Item.ItemIndex]+"'";//FacilityDeviceInfo表中的FieldID对应OrganizitionInfo中的OrganizitionID(datagrid主键)sqlcmd.CommandType=CommandType.Text;if(sqlcmd.ExecuteScalar()!=null){Response.Write("<script>alert('请先删除此油田群下面的设施设备信息汇总表中的记录,再进行此操作');</script>");i_tablecount++;gotoLabel;}///////////////////////////////////////////检测DeviceAccidentInfo表中的是否含有CategoryID字段的记录sqlcmd.CommandText="SELECTFieldIDFROMPtztcsbwhereFieldID='"+DataGrid1.DataKeys[(int)e.Item.ItemIndex]+"'";sqlcmd.CommandType=CommandType.Text;if(sqlcmd.ExecuteScalar()!=null){Response.Write("<script>alert('请先删除此油田群下面的平台整体参数表中记录,再进行此操作');</script>");i_tablecount++;gotoLabel;}///////////////////////////////////////////检测DeviceDetailInfo表中的是否含有CategoryID字段的记录sqlcmd.CommandText="SELECTFieldIDFROMYlztcsbwhereFieldID='"+DataGrid1.DataKeys[(int)e.Item.ItemIndex]+"'";sqlcmd.CommandType=CommandType.Text;if(sqlcmd.ExecuteScalar()!=null){Response.Write("<script>alert('请先删除此油田群下面的油轮整体参数表中记录,再进行此操作');</script>");i_tablecount++;gotoLabel;}///////////////////////////////////////////检测FacilityDeviceInfo表中的是否含有CategoryID字段的记录Label:if(i_tablecount==0)//删除操作成功{stringquery="DELETEFROMOrganizationInfoWHEREOrganizationID='"+DataGrid1.DataKeys[(int)e.Item.ItemIndex]+"'";SqlCommandComm=newSqlCommand(query,Conn);Comm.ExecuteNonQuery();Response.Write("<script>alert('删除记录成功!');</script>");BindData();}}catch(SqlExceptionex){Response.Write("<script>alert('"+ex.Message+"');</script>");}finally{Conn.Close();}}privatevoidBindData(){//stringCategoryID=Request.QueryString["CategoryID"];//根据CategoryID的值来判断本类型stringconnstring="DataSource=localhost;InitialCatalog=FACILITYALARM;uid=facilityalarm;pwd=123456;";SqlConnectionconn=newSqlConnection(connstring);stringquery="SELECT*FROMOrganizationInfowhereParentID='1'";SqlDataAdapterDa=newSqlDataAdapter(query,conn);DataSetDs=newDataSet();Da.Fill(Ds,"OrganizationInfo");//DataSetDs=newDataSet("CategoryCode");//Da.Fill(Ds);采用这种方式也可以//dataGrid1.DataSource=ds.Tables[0].DefaultView;//Response.Write("<script>alert('绑定数据成功');</script>");//当存在记录,绑定相关控件this.DataGrid1.DataSource=Ds;this.DataGrid1.DataBind();//ShowData(Ds);}
解决方案六:
没人回答啊..........等待中
解决方案七:
.........继续等
解决方案八:
换种思路,用DataList,怎么样?
解决方案九:
你是做winform?webform的话可以换成datalist
解决方案十:
能不能现在数据库中转化成这样在来绑定啊?这应该是一个行列转化的问题啊
解决方案十一:
嗯,楼上说的是,用行列转化将数据源转化为那种形式。。。
解决方案十二:
没遇到过,帮顶。
解决方案十三:
不是吧,那企不是要横着翻页!那就自己做控件吧!思想很简单,就和做asp的东西一样从DataTable挨个把值取出来,横向摆放!修改修改删除删除a15b1.15.5c1.25.8<table><tr><td>a</td><td>要增加的a列的值</td>...</tr><tr><td>b</td><td>要增加的b列的值</td>...</tr><tr><td>c</td><td>要增加的c列的值</td>...</tr>如果你要做过ASP程序,实现这个应该很容易!
解决方案十四:
我用datalist尝试过,数据是可以显示出来,但是如何添加编辑和删除按钮呢
解决方案十五:
楼主可以用DataList来实现在前台<asp:DataListID="DataList1"...runat="server"><ItemTemplate>这里列个表格,多行一列,来显示数据库中一个记录 </ItemTemplate></asp:DataList>然后在.cs文件中将DataList1.RepeatColumns=总记录数 就可以了注:如果要分页的话,就将DataList1.RepeatColumns=页面大小 就可以了
解决方案:
aspx页:<ItemTemplate></ItemTemplate>中加<asp:ButtonID="deleteItem"Text="删除"runat="server"OnCommand="deleteItem_Click"CommandArgument='<%#Eval("id")%>/>.cs页:protectedvoiddeleteArticleItem_Click(objectsender,CommandEventArgse){stringid=e.CommandArgument.ToString(); //sql删除语句}
解决方案:
上面.cs函数名打错了改成:protectedvoiddeleteItem_Click(objectsender,CommandEventArgse){stringid=e.CommandArgument.ToString(); //sql删除语句}
解决方案:
我的意思是如何实现修改修改删除删除a15b1.15.5c1.25.8选中第一列的修改按钮时,读取到该条数据记录例如:datagrid可以这样读取主键whereCategoryID='"+DataGrid1.DataKeys[e.Item.ItemIndex].ToString()+"'而在datalist中呢,只有读取到主键,我按“更新”按钮时才可以执行update........语句
解决方案:
关注中,想过这个问题,没实现过
解决方案:
楼主没理解我的意思DataGrid1.DataKeys[e.Item.ItemIndex].ToString()其实是在DataGrid1中将CategoryID绑定进去了,可以取到CategoryID按钮中手动将CategoryID绑定到CommandArgument事件参数中<asp:ButtonID="deleteItem"Text="删除"runat="server"OnCommand="deleteItem_Click"CommandArgument='<%#Eval("CategoryID")%>/>最后在.cs的deleteItem_Click函数中就可以取到whereCategoryID='"+e.CommandArgument.ToString()+"'即可操作了原理其实一样,当然也可以用它自带e事件写
解决方案:
我以前做过和你一样的问题,可以用存储过程,也可以用第三方控件WEBGRID。还有什么问题的话可以加我QQ200580231咱们来讨论讨论。。。。
解决方案:
可以考虑从数据源修改数据