1:运行后,datagrid加载完,点“编辑”,默认都是出现文本框,如果要让某列是下拉框,该如何做?
2:如何给出现的文本框加样式?
3:要用脚本验证文本框输入的内容,如何取到当前所编辑的文本框的id?

解决方案 »

  1.   

    <asp:TemplateColumn HeaderText="Name">
    <HeaderStyle Wrap="False"></HeaderStyle>
    <ItemTemplate>
    <asp:Label ID="lbl" Runat=server text='<%#databinder.eval(container,"dataitem.Name")%>'>
    </asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:dropdownlist id="ddlLine" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlLine_SelectedIndexChanged"></asp:dropdownlist>
    </EditItemTemplate>
    </asp:TemplateColumn>
      

  2.   

    添加模板,ItemTemplate中放置TextBox控件,在EditItemTemplate中放置DropDownList控件
    private void dgUnUsedSheBei_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    dgUnUsedSheBei.EditItemIndex = e.Item.ItemIndex;
    temp_username = ((Label) e.Item.FindControl("lblGridUserName")).Text.Trim();
    BindData();

    } private void dgUnUsedSheBei_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    int userid;
    int shebeiid;
    shebeiid = Convert.ToInt32(dgUnUsedSheBei.DataKeys[e.Item.ItemIndex].ToString());
    DropDownList currentUserNameList = (DropDownList) e.Item.FindControl("ddlUserName");
    userid = Convert.ToInt32(currentUserNameList.SelectedItem.Value);
    //int fpid=Operation.SheBeifp.AddSheBeifpRecord(shebeiid,userid,1);
    //int lyid=Operation.SheBeily.AddSheBeily(shebeiid,userid,"保管员分配");
    Operation.News.AddNews(shebeiid,userid,"保管员分配给用户");
    //Operation.SheBeifp.AddSheBeifp(shebeiid,userid);
    dgUnUsedSheBei.EditItemIndex = -1;
    //处理删除最后一页的最后一条记录
    if( dgUnUsedSheBei.CurrentPageIndex==dgUnUsedSheBei.PageCount-1&&dgUnUsedSheBei.CurrentPageIndex!=0)
    dgUnUsedSheBei.CurrentPageIndex=dgUnUsedSheBei.CurrentPageIndex-1;
    BindData();
    Response.Redirect("./LYPrint.aspx?id="+Convert.ToString(shebeiid)+"&userid="+Convert.ToString(userid),true);
    }
      

  3.   

    ItemDataBound事件寫:
    Dim txtbox1 As New TextBox
    txtbox1 = e.Item.Cells(7).FindControl("txtDate")
    txtbox1.Attributes.Add("onclick", "ShowDate('" & txtbox1.ClientID & "')")
    'ShowDate為js函數
      

  4.   

    你的问题只有一个答案:使用模板列全部搞定
    用程序设置某个控件在DataGrid相应事件内写e.Item.Cells[所在列-1].FindControl("模板列内控件ID")
    在查找控件之前要判断if(e.Item.ItemType==ListItemType.Edit)